我正在尝试将c#中的文本框的值输入到我访问过的数据库中的字段中。出于某种原因,我不断收到错误说:
'未处理的类型' System.Data.OleDb.OleDbException'发生在System.Data.dll
中其他信息:INSERT INTO语句中的语法错误。'
不能完全看出错误,这是我第一次尝试在项目中这样做,所以我对它不太熟悉。这是我的代码:
OleDbConnection connection = new OleDbConnection(CONNECTION STRING GOES HERE);
connection.Open();
string playerName = textBox[i].Text;
string query = "INSERT INTO (TotalPlayerName)(Player Name) VALUES(" + playerName + ")";
OleDbCommand command = new OleDbCommand(query, connection);
command.ExecuteNonQuery();
如果它有帮助那么数据库就会被调用'数据库'该表名为' TotalPlayerName'该字段被称为'玩家姓名'
答案 0 :(得分:3)
执行任务的正确代码是
string cmdText = "INSERT INTO TotalPlayerName ([Player Name]) VALUES(?)";
using(OleDbConnection connection = new OleDbConnection(...))
using(OleDbCommand command = new OleDbCommand(cmdText, connection))
{
connection.Open();
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = textBox[i].Text;
int result = command.ExecuteNonQuery();
if(result > 0)
MessageBox.Show("Record Inserted");
else
MessageBox.Show("Failure to insert");
}
这种方法解决了三个问题:
(ExecuteNonQuery下面的消息仅作为检查ExecuteNonQuery返回值的示例)
还要记住,如果您的表具有多个此字段且某些其他字段不接受空值,则还应为它们提供一些值。
例如
string cmdText = @"INSERT INTO TotalPlayerName ([Player Name], FieldB)
VALUES(?, ?)";
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = textBox[i].Text;
command.Parameters.Add("@p2", OleDbType.VarWChar).Value = "ValueForFieldB";
请记得严格按照顺序排列?添加参数值时