在 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 语句中的语法错误。
这里有三个问题:
- 您正在使用四个参数,但只指定了其中的 3 个。(注释表明您正在循环外指定另一个(
- 在任何一次迭代中,您最多只填充一个参数 - 您期望其他参数的值是多少?
-
您正在尝试将命名参数与
OleDbConnection
一起使用。从OleDbConnection.Parameters
文档中:当"命令类型"设置为"文本"时,OLE DB .NET 提供程序不支持将参数传递给 SQL 语句或由 OleDbCommand 调用的存储过程的命名参数。在这种情况下,必须使用问号 (?( 占位符。