sqlexec进程收到的无效语句id
本文关键字:无效 语句 id 进程 sqlexec | 更新日期: 2023-09-27 18:03:30
我在插入(多行)期间面临以下问题:(一些记录被插入,并且在随机记录数之后我得到一个错误)!!
sqlexec进程收到的无效语句id。
public static int InsertGroupDetails(List<GroupDetails> grp_det)
{
using (IfxConnection con = new IfxConnection(ConfigurationSettings.AppSettings["str_rm"].ToString()))
{
int affectedRow = -1;
StringBuilder cmdTxt = new StringBuilder();
cmdTxt.Append(" INSERT INTO rdm_groupdetails(group_id,dep_code,dep_year,dep_name,boss_num,boss_name) VALUES (?, ?, ?, ?, ?, ? ) ");
foreach (GroupDetails grp in grp_det)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
IfxCommand myIfxCmd = new IfxCommand(cmdTxt.ToString(), con);
myIfxCmd.CommandType = CommandType.Text;
myIfxCmd.Parameters.Clear();
myIfxCmd.Parameters.Add("group_id", grp.Group_id);
myIfxCmd.Parameters.Add("dep_code", grp.Dep_code);
myIfxCmd.Parameters.Add("dep_year", grp.Dep_year);
myIfxCmd.Parameters.Add("dep_name", grp.Dep_name);
myIfxCmd.Parameters.Add("boss_num", grp.Boss_code);
myIfxCmd.Parameters.Add("boss_name", grp.Boss_name);
affectedRow = myIfxCmd.ExecuteNonQuery();
}
con.Close();
con.Dispose();
return affectedRow;
}
}
最可能的事情是grp.Group_id
, grp.Dep_code
, grp.Dep_year
, grp.Dep_name
, grp.Boss_code
或grp.Boss_name
中至少有一个grp
是null
。带有null
值的参数值不发送;您可以重写为:
myIfxCmd.Parameters.Add("group_id", ((object)grp.Group_id) ?? DBNull.Value);
等(即每一个);这将为任何这样的值传递一个数据库null
(不同于c# null
)。
我要做的第二件事是重用单个命令实例:
using(var myIfxCmd = new IfxCommand(cmdTxt.ToString(), con))
{
myIfxCmd.CommandType = CommandType.Text;
// declare parameters (without values; note you might need to declare types)
var id = myIfxCmd.Parameters.Add("group_id");
// ... times 6
if (con.State == ConnectionState.Closed)
{
con.Open();
}
foreach (GroupDetails grp in grp_det)
{
// assign parameter values for this iteration
id.Value = ((object)grp.Group_id) ?? DBNull.Value;
// ... times 6
myIfxCmd.ExecuteNonQuery();
}
}