为什么会出现此错误?错误消息是:INSERT INTO语句中的语法错误。
我想在我的数据库中添加一条记录,但它无法正常工作。问题在哪里?
代码是:
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter DbDataAdabter = new OleDbDataAdapter();
DbDataAdabter.SelectCommand = new OleDbCommand("SELECT * FROM [Phone-Book]", connection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(DbDataAdabter);
connection.Open();
DataRow dataRow = myDataset.Tables["salam"].NewRow();
dataRow[1] = textBox2.Text;
dataRow[2] = textBox3.Text;
dataRow[3] = textBox4.Text;
dataRow[4] = textBox5.Text;
dataRow.EndEdit();
myDataset.Tables["salam"].Rows.Add(dataRow);
DbDataAdabter.Update(myDataset , "salam");
connection.Close();
connection.Dispose();
}
}
答案 0 :(得分:3)
错误在于Update()方法生成的代码,给定查询中固有的元数据以获取信息和结果。如果您向我们提供了异常的SqlString属性,那么我们可以看到发送给Sql Server的内容。
我会告诉你,你的代码首先跳出来的问题是使用Select *
。几乎所有使用不是*
的{{1}}的查询都不是您应该在生产代码中使用的查询;它们用于从Management Studio执行的一次性查询,但不用于程序或其他查询使用的查询。
在这种情况下,Count(*)
允许您无法控制查询生成的列数;如果有人稍后加入并添加了一个列,那么你的应用程序突然表现得非常糟糕,因为你只需要3列,而不是4.在代码执行的任何SELECT语句中使用属性列表。