在 oledbconnection 中插入语法错误

本文关键字:语法 错误 插入 oledbconnection | 更新日期: 2023-09-27 18:32:51

这段代码有什么问题?

for (int i = 1; i <= kalanum; i++)
{
    foreach (Control ctr in panel1.Controls)
    {                       
        if (ctr is TextBox && ctr.Name == i.ToString())
        {
            int kalaid = int.Parse(((TextBox)ctr).Text);
            oleDbCommand1.Parameters.AddWithValue("@k", kalaid);
        }
        else if (ctr is TextBox && ctr.Name == "tbxfee_" + (i.ToString()))
        {
            int fee = int.Parse(((TextBox)ctr).Text);
            oleDbCommand1.Parameters.AddWithValue("@fe", fee);
        }
        else if (ctr is TextBox && ctr.Name == "tbxnumber_" + (i.ToString()))
        {
            int number = int.Parse(((TextBox)ctr).Text);
            oleDbCommand1.Parameters.AddWithValue("@n", number);
        }            
    }
    oleDbCommand1.CommandText = "INSERT INTO fackala(factornum,kalaid,fee,number) values(@f,@k,@fe,@n)";
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();            
}

我的访问文件中的所有列都是数字。当我在表单中插入所有日期并发送表单时,它显示:

插入 INTO 语句中的语法错误。

在 oledbconnection 中插入语法错误

这里有三个问题:

  • 您正在使用四个参数,但只指定了其中的 3 个。(注释表明您正在循环外指定另一个(
  • 在任何一次迭代中,您最多只填充一个参数 - 您期望其他参数的值是多少?
  • 您正在尝试将命名参数与 OleDbConnection 一起使用。从OleDbConnection.Parameters文档中:

    当"命令类型"设置为"文本"时,OLE DB .NET 提供程序不支持将参数传递给 SQL 语句或由 OleDbCommand 调用的存储过程的命名参数。在这种情况下,必须使用问号 (?( 占位符。