此代码有什么问题?
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();
}
我的访问文件中的所有列都是数字。当我在表单中插入所有日期并发送表单时,它会显示:
INSERT INTO语句中的语法错误。
答案 0 :(得分:0)
这里有三个问题:
您正在尝试使用OleDbConnection
命名参数。来自OleDbConnection.Parameters
文档:
当CommandType设置为Text时,OLE DB .NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符。