2
    public void RegisterUser(string passw,string uname ,string fname ,string lname, string email)
{
    string strSql = @"INSERT INTO User (passw,uname,fname,lname,email) values ('" + passw + "','" + uname + "','" + fname + "','" + lname + "','" + email + "')";                                                           
    cn.Open();
    OleDbCommand cmd = new OleDbCommand(strSql,cn);
    int yy= cmd.ExecuteNonQuery();
    cn.Close();
    cn.Dispose();

}

无论我做什么,我都会遇到同样的错误 ,有人在这里看到有问题吗?或者有另一种创造性的方法来解决这个问题谢谢

4

2 回答 2

6

您的代码可以根据用户输入动态更改。这就是导致错误的原因。

让我解释一下您的任何输入字段是否包含撇号 [ ' ] sql 会中断并且现在有一个未闭合的引号。

不仅如此,它还会将您的代码暴露给SQL-Injection Attacks

所以我建议你使用参数来传递值,因为参数被区别对待并且是安全的以及防止 SQL 注入。

    public void RegisterUser(string passw,string uname ,string fname ,string lname, string email)
{
    string strSql = @"INSERT INTO User (passw,uname,fname,lname,email) values     (@passw,@uname,@fname,@lname,@email)";                                                           
    cn.Open();
    OleDbCommand cmd = new OleDbCommand(strSql,cn);
    cmd.Parameters.AddWithValue("@passw",passw);
    cmd.Parameters.AddWithValue("@uname",uname);
    cmd.Parameters.AddWithValue("@fname",fname);
    cmd.Parameters.AddWithValue("@lname",lname);
    cmd.Parameters.AddWithValue("@email",email);
    int yy= cmd.ExecuteNonQuery();
    cn.Close();
    cn.Dispose();
}
于 2012-04-20T00:07:47.297 回答
0

在 Oracle 中,user是保留字并INSERT INTO User ...生成ORA-00903: invalid table name.

于 2012-04-20T01:19:04.050 回答