Tag: 连接

在C#中处理多个数据库连接的最佳方法是什么?

如果说我需要针对两个单独的数据库运行两个单独的SQL语句。 现在我做(伪代码): Try{ declare variable connectionA to DatabaseA declare variable connectionB to DatabaseB connectionA.open() connectionB.open() declare variable SQLCmdA with ConnectionA and one SQL statement declare variable SQLCmdB with ConnectionB and another SQL statement SQLCmdA.executeNonQuery() SQLCmdB.executeNonQuery() } Catch () { print error message } Finally(){ connectionA.close() connectionB.close() SQLCmdA.Dispose() SQLCmdB.Dispose() } 以上看起来很笨拙。 如果我有三个不同的sql语句,我需要三个不同的SQLCmd变量。 是否有“标准”的方式来做这些事情,特别是在效率和绩效方面? 如果有人能提供一个简单的改进的伪代码,那就太好了。 另外,我是否需要担心实现连接池,以节省资源并加快程序的速度? 如果是这样,我在这种情况下如何实现它? […]

底层连接已关闭:接收时发生意外错误

我在这里是因为我在通过ftp协议下载一些文件时遇到了问题。 这很奇怪,因为它偶尔发生,甚至对于同一个文件也是如此。 只是一个精度:我正在下载非常大的文件(从500 Mo到30Go) 以下是我的函数返回的exception类型:(抱歉,这是法语) System.Net.WebException: La connexion sous-jacente a été fermée : Une erreur inattendue s’est produite lors de la réception. à System.Net.FtpWebRequest.CheckError() à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.IO.Stream.Close() à System.Net.ConnectionPool.Destroy(PooledStream pooledStream) à System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse) à System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.Net.CommandStream.Abort(Exception e) à System.Net.CommandStream.CheckContinuePipeline() à System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) […]

C# – 意外的身份validation方法mysql_native_passwordexception

我没有看到任何关于此的内容,但我一直在尝试用SQL数据库进行练习的最长时间。 我尝试过MSSQL并且感到很沮丧,所以我尝试了MySQL并且进一步了解了。 数据库似乎已启动并运行,我甚至进行了查询以创建表。 虽然在尝试连接Microsoft的C#Express版本时,我得到了例外:“意外的身份validation方法mysql_native_password”我知道密码是正确的。 我甚至引用了MySQL.Data.dll。 这是我的代码,我在connection.Open()上得到了例外。有人可以帮帮我吗? public Form1() { MySqlConnection connection = new MySqlConnection(“Data Source = localhost; Initial Catalog = MySQL55; Integrated Security = SSPI; User ID = root; Password = ;”); try { connection.Open(); } finally { if (connection != null) { connection.Close(); } } }

Socket单客户端/服务器连接,服务器可以多次发送,客户端只能发一次

我编写了一个客户端和服务器应用程序,我需要用它来连接我用C#制作的跳棋游戏。 我有连接的客户端和服务器,服务器可以重复发送客户端消息来更新标签但是当客户端尝试发送消息时它会抛出错误 “由于没有连接套接字而且(当使用sendto调用在数据报套接字上发送时)没有提供地址,因此不允许发送或接收数据的请求。” 到目前为止,这是我的客户端和服务器。 客户 – public partial class Form1 : Form //main form that establishes connection { Form2 form2 = new Form2(); Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Socket acc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint endPoint; static byte[] Buffer { get; set; } string text; public Form1() { InitializeComponent(); } private void […]

表加入Entity Framework的性能问题

加入两个表会导致选择时间从330秒增加到40秒。 将要连接的表仅包含ID和文本。 加入两张桌子时,我没想到选择时间会增加8倍。 我的JOIN有什么问题或者这是正常的SQL Server行为吗? 主表填充了3500万条记录,以查看在达到10 GB的SQL Server Express限制时它的执行情况。 在字段LogTimeStamp和字段LogType上创建了另一个索引。 连接表的内容: var queryList = messages .Join(types, type => type.LogType, typeText => typeText.LogType, (msg, msgType) => new { msg.LogID, msg.LogTimeStamp, msg.LogUser, msg.LogType, msgType.LogTypeName, msg.LogMessage }) .Where(t => System.Data.Entity.DbFunctions.TruncateTime(t.LogTimeStamp) >= fromDate) .Where(t => System.Data.Entity.DbFunctions.TruncateTime(t.LogTimeStamp) t.LogType != 4) .OrderBy(m => m.LogID) .ToList(); 结果SQL SELECT 1 AS [C1], [Extent1].[LogID] […]

C#Mysql连接必须有效并且打开

首先:我在没有使用oop的情况下运行了代码。 我在同一个类中声明了所有变量,并在将查询传递给db之前和之后打开/关闭了连接。 那很有效! 现在有了一些新的经验,我试图将我的代码分成不同的类。 现在它不再工作了。 它告诉我“连接必须有效且开放”。 足够的文字,这是我目前的代码: Services.cs public static MySqlConnection conn // Returns the connection itself { get { MySqlConnection conn = new MySqlConnection(Services.ServerConnection); return conn; } } public static string ServerConnection // Returns the connectin-string { get { return String.Format(“Server={0};Port=XXXX;Database=xxx;Uid=xxx;password=xxXxxXxXxxXxxXX;”, key); } } public static void DB_Select(string s, params List[] lists) { try […]

Azure SQL数据库连接问题 – 连接太多?

我有一个网站,这是我最近推出的白色标签(同一网站的多个版本)。 目前还没有大量的流量 – 主要是机器人,但每天可能有800个用户。 除了位于非azure服务器上的管理面板之外,它还在Azure上托管Azure数据库。 两个站点都连接到同一个Azure数据库。 还有一些工作人员角色正在运行以处理数据 – 99%的时间他们没有做任何事情,但他们会定期检查。 我总是经历随机错误,持续几秒钟,然后再次确定,例如: 从服务器接收结果时发生传输级错误。 (提供程序:TCP提供程序,错误:0 – 远程主机强制关闭现有连接。) 然而,今天早上,我们遇到了一个更严重的问题。 它始于: System.ComponentModel.Win32Exception:远程主机强制关闭现有连接 这是在机器人(Google,百度,AhrefsBot和Wiseguys.nl)为该网站编制索引时发生的。 我从这些中得到了一个或多个错误。 然后我得到了: System.Data.SqlClient.SqlException:服务在处理您的请求时遇到错误。 请再试一次。 错误代码40143.当前命令发生严重错误。 结果(如果有的话)应该被丢弃。 这是在ExecuteReader阶段。 10分钟后,真正的问题来了 – 这意味着没有人可以登录到管理界面,但是当我测试它时,Azure托管网站似乎没问题,尽管机器人仍然会出现错误。 问题是: System.ComponentModel.Win32Exception:等待操作超时 这继续随机连接工作大约一个小时。 然后我遇到了另一个问题: System.Data.SqlClient.SqlException:资源ID:1。数据库的请求限制为180且已达到。 有关帮助,请参阅“ http://go.microsoft.com/fwlink/?LinkId=267637 ”。 这发生在最后一小时的开关 – 主要是工人角色。 然后我试图找出占用所有这些请求的内容,我找到了这个命令: SELECT * FROM sys.dm_exec_requests 当我一遍又一遍地运行它时,它只返回了1或2个请求。 所以我的问题是:1)是否有其他人经常相对定期(一次,可能一天两次)与Azure上托管的服务器暂时断开连接? 2)上述事件列表是否表明存在特定问题? 当许多管理员一次登录时,可能都会发生这种情况。 3)当我收到180限制消息时,如何更好地调试对数据库的请求数? 提前致谢。

如何检查数据库可用性

我有以下代码来测试数据库连接,它会定期运行以测试数据库可用性: private bool CheckDbConn() { SqlConnection conn = null; bool result = true; try { conn = DBConnection.getNewCon(); ConnectionState conState = conn.State; if (conState == ConnectionState.Closed || conState == ConnectionState.Broken) { logger.Warn(LogTopicEnum.Agent, “Connection failed in DB connection test on CheckDBConnection”); return false; } } catch (Exception ex) { logger.Warn(LogTopicEnum.Agent, “Error in DB connection test on […]

将参数绑定到OLEDB命令会引发错误

我正在使用带有.NET的AS 400 OLEDB。 它用 ‘?’ 而不是’@param用命令绑定参数现在有一种情况,命令就像 SELECT … FROM (SELECT … ROW_NUMBER() OVER(ORDER BY ColumnName) as RowNum FROM Employees e ) as DerivedTableName WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) – 1 现在我的命令变成了 SELECT … FROM (SELECT … ROW_NUMBER() OVER(ORDER BY ColumnName) as RowNum FROM Employees e ) as DerivedTableName WHERE RowNum BETWEEN ? […]

将字符串集合连接成一个带分隔符和封闭字符的字符串

我有一组源字符串,我希望连接到一个目标字符串。 源集合如下所示: { “a”, “b”, “c” } 我希望输出字符串是: abc 但有时,我也想要一个分隔符。 所以对于相同的输入,现在输出是: abc 最后,输入有时需要包含在其他字符中,在本例中为[] ,导致输出为: [a]-[b]-[c] 空源集合应该产生一个空字符串。 我怎么会这样呢?