我正在开发一个项目,您可以使用INSERT INTO命令和Acces数据库(OleDB)将用户添加到数据库。
我遇到0x80040E14
错误,似乎无法解决。
代码如下:
public void AddUser()
{
OleDbConnection DATABASE_CONNECTION = new OleDbConnection(CONNECTION_STRING);
try
{
DATABASE_CONNECTION.Open();
String SQL_QUERY = "INSERT INTO Users(Username, Password, Voornaam, Tussenvoegsel, Achternaam, Email, VolledigeNaam) VALUES(?, ?, ?, ?, ?, ?, ?)";
OleDbCommand COMMAND = new OleDbCommand(SQL_QUERY, DATABASE_CONNECTION);
COMMAND.Parameters.AddWithValue("Username", OleDbType.Char).Value = Username;
COMMAND.Parameters.AddWithValue("Password", OleDbType.Char).Value = Password;
COMMAND.Parameters.AddWithValue("Voornaam", OleDbType.Char).Value = Voornaam;
COMMAND.Parameters.AddWithValue("Tussenvoegsel", OleDbType.Char).Value = Tussenvoegsel;
COMMAND.Parameters.AddWithValue("Achternaam", OleDbType.Char).Value = Achternaam;
COMMAND.Parameters.AddWithValue("Email", OleDbType.Char).Value = Email;
COMMAND.Parameters.AddWithValue("VolledigeNaam", OleDbType.Char).Value = VolledigeNaam;
int rows = COMMAND.ExecuteNonQuery();
DATABASE_CONNECTION.Close();
if (rows > 0)
{
MessageBox.Show("User added");
}
else
{
MessageBox.Show("FAIL");
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
答案 0 :(得分:3)
密码是MSAccess中的reserved keyword。要使用它,您需要将其括在方括号
中 String SQL_QUERY = "INSERT INTO Users(Username, [Password], Voornaam, Tussenvoegsel, " +
"Achternaam, Email, VolledigeNaam) VALUES(?, ?, ?, ?, ?, ?, ?)";
但是,如果仍然可以,请更改列名,因为这个问题会非常烦人。
您的代码中还有其他错误。
方法AddWithValue需要OleDbParameter
的值作为第二个参数,而不是类型。
COMMAND.Parameters.AddWithValue("Username", Username);
....