0

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

谢谢你。

4

2 回答 2

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);
于 2013-04-21T19:00:21.610 回答
1

如果您还没有,请查看OleDbCommand.Parameters 。它更安全(根据@Mark B 的评论),它可能会清除您遇到的语法错误。

如果您坚持使用纯String.Format方法,只需输出cmd.CommandText以进行调试以查看语法错误在哪里。

于 2013-04-21T19:05:23.233 回答