我正在创建一个数据库应用;与 MS Access 数据库文件。 发生的一切都是正确插入的,但不是电话号码。 输入电话号码时,我正在使用的应用程序抛出异常。
我已经仔细检查了我的编码和我的数据库,但无法弄清楚为什么会导致这个问题。 这是代码的一部分。
private void btn_Save_Click(object sender, EventArgs e)
{
{
try
{
OleDbCommand DBcmd = new OleDbCommand();
DBcmd.CommandType = CommandType.Text;
DBcmd.CommandText = "INSERT INTO tbl_ClientInfo (FirstName, LastName, Address, ZipCode, City, State, Country, Language, PhoneNr, MobileNr)" + "VALUES (@FirstName, @LastName, @Address, @ZipCode, @City, @State, @Country, @Language, @PhoneNr, @MobileNr)";
DBcmd.Parameters.AddWithValue("@FirstName", txt_FirstName.Text);
DBcmd.Parameters.AddWithValue("@LastName", txt_LastName.Text);
DBcmd.Parameters.AddWithValue("@Address", txt_Address.Text);
DBcmd.Parameters.AddWithValue("@ZipCode", txt_ZipCode.Text);
DBcmd.Parameters.AddWithValue("@City", txt_City.Text);
DBcmd.Parameters.AddWithValue("@State", txt_State.Text);
DBcmd.Parameters.AddWithValue("@Country", ComboBox_Countries.SelectedItem);
DBcmd.Parameters.AddWithValue("@Language", comboBox_Languages.SelectedItem);
DBcmd.Parameters.AddWithValue("@PhoneNr", txt_PhoneNr.Text);
DBcmd.Parameters.AddWithValue("@MobileNr", txt_MobileNr.Text);
DBcmd.Connection = DBconnection;
DBconnection.Open();
DBcmd.ExecuteNonQuery();
DBconnection.Close();
catch (Exception ex)
{
System.IO.StreamWriter file = new System.IO.StreamWriter(@"d:\test.txt");
file.WriteLine(ex);
file.Close();
}
}
}
提前致谢
最佳答案
语言是 reserved keyword在 MS-Access Jet 中。需要用方括号封装
DBcmd.CommandText = "INSERT INTO tbl_ClientInfo (FirstName, LastName, Address, ZipCode, " +
"City, State, Country, [Language], PhoneNr, MobileNr)" +
"VALUES (@FirstName, @LastName, @Address, @ZipCode, " +
"@City, @State, @Country, @Language, @PhoneNr, @MobileNr)";
如果仍然可行,我建议更改该列名称。每次使用这张 table 时,你总会发现自己陷入了这种困境。
关于c# - 无法将电话号码插入数据库(MS Access 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209688/