当INSERT INTO
命令到达cmd.ExecuteNonQuery
时,我收到错误信息“语法错误”。
使用string.Format
非常重要,并且结构尽可能接近当前结构。
{
OleDbConnection con = DAL.GetConnection();
con.Open();
if (con.State == ConnectionState.Open)
{
string s = string.Format("INSERT INTO DataTable1 (Username, Password, FName, LName, Bdate, Sex, City, Mail) VALUES ('{0}', '{1}', '{2}', '{3}', #{4}#, {5}, {6}, '{7}')", uname, pass, fname, lname, bd, sex, city, mail);
OleDbCommand cmd = DAL.GetCommand(con, s);
int check = cmd.ExecuteNonQuery();
if (check == 0)
{
con.Close();
Response.Redirect("Reg.aspx?err=-An error has occured. Please try again-");
}
谢谢。
答案 0 :(得分:4)
可能在传递的文本中有一些引号,请尝试使用参数...
string s = "INSERT INTO DataTable1 (Username) VALUES (@user)";
OleDbCommand cmd = DAL.GetCommand(con, s);
//Add the parameter ...
OleDbParameter nam = new OleDbParameter("@user",uname);
cmd.Parameters.Add(nam);
答案 1 :(得分:1)
如果您还没有,请查看OleDbCommand.Parameters。它更安全(沿着@Mark B的注释),它可能会清除你的语法错误。
如果你坚持使用纯String.Format
方法,只需输出cmd.CommandText
进行调试,看看语法错误在哪里。