使用OLE DB .NET Provider插入数据库表将无法正常工作

时间:2013-04-21 18:51:06

标签: c# oledbcommand

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-");
                }

谢谢。

2 个答案:

答案 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进行调试,看看语法错误在哪里。