原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1222/255.html
错误信息:
Fatal error encountered during command execution.(常州微信公众平台命令执行过程中遇到的致命错误。)
出现这种问题有可能是两种情况:
1.查询结果包含海量数据。长时间检索无响应。这种情况,需要优化SQL,尽量减少数据输出量。
2.表结构损坏。可以通过 CHECK TABLE REPAIR TABLE 语句进行检测或修复。
初步判断是第一种情况,有两种解决方案:优化sql语句,但是如果数据量确实大,而且对程序性能要求不高的情况下,有一种简单的解决方法就是设置常州微信小程序开发CommandTimeOut属性。
MySqlCommand optcom = new MySqlCommand(strOpt, mysqlcon, trans);
optcom.CommandTimeout = 0;
CommandTimeout 属性
指示执行命令期间在终止尝试和产生错误之前需等待的时间。
设置和返回值
设置或返回 Long 值,该值指示等待命令执行的秒数。常州微信小程序开发默认值为 30。
说明
用 Connection 对象或 Command 对象的 CommandTimeout 属性来允许因网络拥挤或服务器负载过重产生的延迟而取消 Execute 方法调用。如果在 CommandTimeout 属性设置的时间间隔内未执行完命令,将产生错误,并且 ADO 取消该命令。如果将属性设置为零,ADO 将一直等待到命令执行完毕。请确保正在为其编写代码的提供者和数据源支持 CommandTimeout 功能。
Connection 对象的 ConnectionTimeout 设置对同一 Connection 中 Command 对象上的 CommandTimeout 设置没有影响,即 Command 对象的 CommandTimeout 属性不继承 Connection 对象的ConnectionTimeout 值。
在 Connection 对象上,打开 Connection 后,ConnectionTimeout 属性将保持为读/写。
ConnectionTimeout 属性
指示常州手游开发培训-幻天网络在终止尝试和产生错误前建立连接期间所等待的时间。
设置和返回值
设置或返回指示常州游戏开发运营等待连接打开的时间的长整型值(单位为秒)。默认值为 15。
说明
如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用 Connection 对象的 ConnectionTimeout 属性。如果打开连接前所经过的时间超过 ConnectionTimeout 属性上设置的时间,将产生错误,并且 ADO 将取消该尝试。如果将该属性设置为零,ADO 将无限等待直到连接打开。请确认正在对其编写代码的提供者会支持 ConnectionTimeout 功能。
连接关闭时 ConnectionTimeout 属性为读/写,而打开时其属性为只读。
方法二:
方法三:
1.连接数据库时提示connection must be valid and open,代码里我明明open了啊。
2.使用transaction事务处理时应该在何时创建事务启动事务?如果常州企业培训在如下代码位置启动事务,在catch里会提示找不到transaction这个实例。
方法二:
MySqlParameter[] para = {
new MySqlParameter("@aaa",i.aaa),
new MySqlParameter("@bbb",i.bbb),
new MySqlParameter("@ccc",i.ccc),
}; //最后常州微信平台开发多了个( , )逗号
方法三:
1.连接数据库时提示connection must be valid and open,代码里我明明open了啊。
2.使用transaction事务处理时应该在何时创建事务启动事务?如果常州企业培训在如下代码位置启动事务,在catch里会提示找不到transaction这个实例。
public void connectToMySqlService(DataGridView gridView, string sqlString,MysqlCmd mysqlcmd)
{
try
{
//创建数据提供者
MySqlDataAdapter DataAdapter = new MySqlDataAdapter();
MySqlCommand cmd = new MySqlCommand();
conn.Open();
//启动事务
/* MySqlTransaction trans = conn.BeginTransaction();
cmd.Transaction = trans;
*/
cmd.CommandText = sqlString;
switch (mysqlcmd)
{
case MysqlCmd.select:
{
DataAdapter.SelectCommand = cmd;
int n = DataAdapter.SelectCommand.ExecuteNonQuery();
MessageBox.Show("有条 " + n.ToString() + " 记录被查询!");
//填充数据集dataset,并为本次填充的数据起名“student_table”
DataAdapter.Fill(dataset, "student_table");
gridView.DataSource = dataset;
//在dataGridView1控件中显示名为student_table的填充数据
gridView.DataMember = "student_table";
break;
}
case MysqlCmd.insert:
{
DataAdapter.InsertCommand = cmd;
int n = DataAdapter.InsertCommand.ExecuteNonQuery();
MessageBox.Show("有条 " + n.ToString() + " 记录被插入!");
mysqlcmd = 0;
return;
}
case MysqlCmd.delete:
{
DataAdapter.DeleteCommand = cmd;
int n = DataAdapter.DeleteCommand.ExecuteNonQuery();
MessageBox.Show("有条 " + n.ToString() + " 记录被删除!");
mysqlcmd = 0;
return;
}
case MysqlCmd.update:
{
DataAdapter.UpdateCommand = cmd;
int n = DataAdapter.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("有条 " + n.ToString() + " 记录被更新!");
mysqlcmd = 0;
return;
}
default:
break;
}
// trans.Commit();
}
catch (Exception ex)
{
//trans.Rollback();
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
conn.Dispose();
dataset.Dispose();
MessageBox.Show("关闭连接");
}
}
}
//定义连接
MySqlConnection db_conn;
//打开连接
string str_db_conn = string.Format("Server={0};Port={1};Database={2};Username={3};Password={4};charset=utf8;", ip, port, database, userName, userPwd);
db_conn = new MySqlConnection(str_db_conn);
db_conn.Open();
哈哈 我明白了 我缺了这行代码
cmd.Connection = conn;
上篇:上一篇:常州游戏开发运营-C#string和StringBuilder
下篇:下一篇:常州网站技术微信平台-c++分割字符串