我有一个名字,姓氏,电子邮件,主管的表格。然后,我将代码置于按钮设置为此
之后 private void agentInsertButton_Click(object sender, EventArgs e)
{
try
{
ad.InsertCommand = new OleDbCommand("insert into Agents values ([FirstName],[LastName],[Email],[Supervisor])", con);
ad.InsertCommand.Parameters.Add("@FirstName", OleDbType.VarChar).Value = agentNametextBox1.Text.ToString();
ad.InsertCommand.Parameters.Add("@LastName", OleDbType.VarChar).Value = agentLastNametextBox4.Text.ToString();
ad.InsertCommand.Parameters.Add("@Email", OleDbType.VarChar).Value = agentEmailtextBox3.Text.ToString();
ad.InsertCommand.Parameters.Add("@Supervisor", OleDbType.VarChar).Value = agentSupervisortextBox2.Text.ToString();
con.Open();
ad.InsertCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
};
我收到的查询值错误数和目标字段不一样。我确信这是我如何让数据库发送变量和导致问题的AgentID。我是新手,但这是我的工作想要使用的。期待一个坚实的答案。
我只是使用名为Agents
的简单访问数据库字段
AgentID - auto number
FirstName - text
LastName - text
Email - text
Supervisor - text
答案 0 :(得分:3)
当你写一个INSERT
语句时,它必须是这样的:
INSERT INTO TableName VALUES (ValueList)
在这种情况下,您必须为每个列及其添加到表中的顺序提供值,或者像这样:
INSERT INTO TableName (ColumnList) VALUES (ValueList)
在这种情况下,您可以按任意顺序指定列的子集。你们两个都做不到。你做到了这一点:
INSERT INTO TableName VALUES (ColumnList)
这是毫无意义的。你的SQL必须是这样的:
insert into Agents ([FirstName],[LastName],[Email],[Supervisor]) values (@FirstName,@LastName,@Email,@Supervisor)
请注意,这些值现在与您添加到命令的参数相匹配。
答案 1 :(得分:0)
像这样更改您的查询
ad.InsertCommand = new OleDbCommand("insert into Agents values (@FirstName,@LastName,@Email,@Supervisor)", con);
或
ad.InsertCommand = new OleDbCommand("insert into Agents (FirstName,LastName,Email,Supervisor) values (@FirstName,@LastName,@Email,@Supervisor)", con);
答案 2 :(得分:0)
OleDb是基于索引的,并没有使用命名参数。
更改如下:
ad.InsertCommand = new OleDbCommand("insert into Agents (FirstName, LastName, Email, Supervisor) values (?, ?, ?, ?)", con);
ad.InsertCommand.Parameters.AddWithValue("?", agentNametextBox1.Text);
ad.InsertCommand.Parameters.AddWithValue("?", agentLastNametextBox4.Text);
ad.InsertCommand.Parameters.AddWithValue("?", agentEmailtextBox3.Text);
ad.InsertCommand.Parameters.AddWithValue("?", agentSupervisortextBox2.Text);