gpt4 book ai didi

c# - 系统.Data.OleDb.OleDbException : Syntax error in INSERT INTO statement

转载 作者:行者123 更新时间:2023-12-02 12:22:46 25 4
gpt4 key购买 nike

    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();

}

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

最佳答案

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

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

不仅如此,它还会使您的代码遭受 SQL 注入(inject)攻击

所以我建议您使用参数来传递值,因为参数的处理方式不同,并且是安全的并且可以防止 SQL 注入(inject)。

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

关于c# - 系统.Data.OleDb.OleDbException : Syntax error in INSERT INTO statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com