在访问中插入新行

本文关键字:新行 插入 访问 | 更新日期: 2023-09-27 18:35:12

也许我做错了,但我试图使用 ado.net 在表中插入新行。不过,它告诉我语法是错误的。

customers = new DataTable("Customers");
cmd = "SELECT * FROM Customers";
con = new OleDbDataAdapter(cmd, strconn);
con.FillSchema(customers, SchemaType.Source);
con.Fill(customers);
DataRow cur;
cur = customers.NewRow();
cur["Company"] = textBoxCompany.Text;
cur["First Name"] = textBoxFirstName.Text;
cur["Last Name"] = textBoxLastName.Text;
cur["E-mail Address"] = textBoxEmail.Text;
cur["Job Title"] = textBoxTitle.Text;
cur["Business Phone"] = textBoxPhone.Text;
customers.Rows.Add(cur);
OleDbCommandBuilder cb = new OleDbCommandBuilder(con);
con.InsertCommand = cb.GetInsertCommand();           
con.InsertCommand.Parameters.AddWithValue("Company",cur["Company"]);
con.InsertCommand.Parameters.AddWithValue("Last Name",cur["Last Name"]);
con.InsertCommand.Parameters.AddWithValue("First Name", cur["First Name"]);
con.InsertCommand.Parameters.AddWithValue("E-Mail Address",cur["E-mail Address"]);
con.InsertCommand.Parameters.AddWithValue("Job Title",cur["Job Title"]);
con.InsertCommand.Parameters.AddWithValue("Business Phone",cur["Business Phone"]);
con.Update(customers);

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

堆栈跟踪:

at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
at Project2.Form1.button1_Click(Object sender, EventArgs e) in Form1.cs:line 54

在访问中插入新行

根据此文档关于命令生成

如果列名或表,则自动命令生成逻辑失败 名称包含任何特殊字符,例如空格、句点、 引号或其他非字母数字字符,即使 用括号分隔。完全限定的表名,形式为 支持catalog.schema.table。

由于列名包含空格,因此查询将不起作用。 您必须手动创建插入语句,这相当简单。 只需在所有列名两边加上括号,并对没有空格或特殊字符的值使用参数。

INSERT INTO [TableName] ([Column1], [Column2], ...)
VALUES (@Column1, @Column2, ...)

您也可以在参数创建中使用这些参数名称:

con.InsertCommand.Parameters.AddWithValue("@column1", cur["..."]);