Fatal error encountered during command execution.错误

时间:2021-05-12 18:31:35
运行后出现这个错误,怎么回事啊
public void SelectDatas(string tasktableid,int toid)
        {
            Task task = new Task();
            StringBuilder sa = new StringBuilder();
            sa.Append("select datas");
            sa.Append(" from t_taskdatas,t_taskdata");
            sa.Append(" where t_taskdata.taskdataid=t_taskdatas.taskdataid and t_taskdata.tasktableid=@tasktableid and t_taskdatas.upid=@toid");
            MySqlParameter[] pmts = new MySqlParameter[2];
            pmts[0] = new MySqlParameter("@tasktableid", tasktableid);
            pmts[1] = new MySqlParameter("@upid", toid);
            DataTable dt = DB.getDataTable_Pmts(sa.ToString(), pmts);
            foreach (DataRow dr in dt.Rows)
            {
                task.datas = dr["datas"].ToString();
                aList.Add(task);
            }
        }
这是查询代码,我在数据库里输入上面的SQL语句都可以查出来,可是程序里就总错误,求指点

8 个解决方案

#1


StringBuilder sa = new StringBuilder(150);
试试呢?

#2


不需要"@"
pmts[0] = new MySqlParameter("tasktableid", tasktableid);
pmts[1] = new MySqlParameter("upid", toid);
为什么没有参数类型?


 

#3


引用 2 楼 reface 的回复:
不需要"@"
pmts[0] = new MySqlParameter("tasktableid", tasktableid);
pmts[1] = new MySqlParameter("upid", toid);
为什么没有参数类型?

什么参数类型,@要的吧,我其他的查询函数都是这样写的都没问题呢

#4


参数一般包括:参数名、参数类型、参数值。
从下面这句看
pmts[0] = new MySqlParameter("@tasktableid", tasktableid);
只有参数名和参数值。
你要是确认代码没问题,断点跟踪一下传入的值

#5


引用 4 楼 reface 的回复:
参数一般包括:参数名、参数类型、参数值。
从下面这句看
pmts[0] = new MySqlParameter("@tasktableid", tasktableid);
只有参数名和参数值。
你要是确认代码没问题,断点跟踪一下传入的值

可是我最开始不是设置了tasktableid的类型么

#6


找到了,晕,是@toid,写错了

#7


看一下字段是否设置小了

#8


查询MYSQL 数据库 时常出现 错误.错误信息 如下:Fatal error encountered during command execution.

出现这种问题有可能是两种情况

1.查询结果包含海量数据。长时间检索无响应。这种情况,需要优化SQL,尽量减少数据输出量。

2.表结构损坏。可以通过 CHECK TABLE REPAIR TABLE 语句进行检测或修复。

附 CHECK TABLE 语法说明 

CHECK TABLE tbl_name[,tbl_name] ... [option] ...

option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计数据被更新。CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。

#1


StringBuilder sa = new StringBuilder(150);
试试呢?

#2


不需要"@"
pmts[0] = new MySqlParameter("tasktableid", tasktableid);
pmts[1] = new MySqlParameter("upid", toid);
为什么没有参数类型?


 

#3


引用 2 楼 reface 的回复:
不需要"@"
pmts[0] = new MySqlParameter("tasktableid", tasktableid);
pmts[1] = new MySqlParameter("upid", toid);
为什么没有参数类型?

什么参数类型,@要的吧,我其他的查询函数都是这样写的都没问题呢

#4


参数一般包括:参数名、参数类型、参数值。
从下面这句看
pmts[0] = new MySqlParameter("@tasktableid", tasktableid);
只有参数名和参数值。
你要是确认代码没问题,断点跟踪一下传入的值

#5


引用 4 楼 reface 的回复:
参数一般包括:参数名、参数类型、参数值。
从下面这句看
pmts[0] = new MySqlParameter("@tasktableid", tasktableid);
只有参数名和参数值。
你要是确认代码没问题,断点跟踪一下传入的值

可是我最开始不是设置了tasktableid的类型么

#6


找到了,晕,是@toid,写错了

#7


看一下字段是否设置小了

#8


查询MYSQL 数据库 时常出现 错误.错误信息 如下:Fatal error encountered during command execution.

出现这种问题有可能是两种情况

1.查询结果包含海量数据。长时间检索无响应。这种情况,需要优化SQL,尽量减少数据输出量。

2.表结构损坏。可以通过 CHECK TABLE REPAIR TABLE 语句进行检测或修复。

附 CHECK TABLE 语法说明 

CHECK TABLE tbl_name[,tbl_name] ... [option] ...

option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表,关键字统计数据被更新。CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。