110,538
社区成员
发帖
与我相关
我的任务
分享
conn.Open();
如果要22秒(确定没有其它堆积的并发查询任务的情况下),那么只有查看到数据库的物理连接了。比如说是命名管道连接还是tcp连接,路由器有没有什么问题,等等网络问题,或者数据库服务器问题。你可以使用一个成熟的、流行的客户端查询分析器来试一下,此时应该也用22秒之久才能连上,此时说明你的连网方式有问题。
程序通常经过了自动化测试,每隔几分钟就运行一次测试程序,到发布时这个 conn.Open 代码跑了数万次。所以测试驱动的开发,通常不用调试就能把精力放到正确的地方,不会花精力去怀疑本不该怀疑的地方。如果一定要怀疑,仍是设计测试用例来探测,测试为准! private void Button_check_Click(object sender, RoutedEventArgs e)
{
string sqlStr2 = "select * from order1";
DataSet test = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, sqlStr2, null);
foreach (DataRow row in test.Tables[0].Rows)
{
MessageBox.Show(row[0].ToString());
}
}
public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
//创建一个MySqlCommand对象
MySqlCommand cmd = new MySqlCommand();
//创建一个MySqlConnection对象
MySqlConnection conn = new MySqlConnection(connectionString);
try
{
//调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
//调用 MySqlCommand 的 ExecuteReader 方法
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = cmd;
DataSet ds = new DataSet();
adapter.Fill(ds);
//清除参数
cmd.Parameters.Clear();
conn.Close();
return ds;
}
catch (Exception e)
{
//throw
return null;
}
}
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open) conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (MySqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
conn.Close();
return val;
}
}
//更新按钮
private void UpInfoClick(object sender, RoutedEventArgs e)
{
string UpDateInfo = ValidInput(UpdateId);
int RowFle = MySqlHelper.ExecuteNonQuery(MySqlHelper.Conn, CommandType.Text, UpDateInfo, null);
if (RowFle>0)
{
MessageBox.Show($"更新信息成功");
}
closeUpInfo();//订阅了表关闭
}
//更新表关闭时
private void UpdateTable_closeUpInfo()
{
updateTable.Close();
CloneInfo();
if (!Window.GetWindow(dataGrid).IsVisible)
{
Window.GetWindow(dataGrid).Show();
}
dataGrid.UpdateLayout();
}