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 インジェクション攻撃にさらされることにもなります。

したがって、パラメーターは異なる方法で処理され、安全であり、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 に答える