【发布时间】:2020-04-13 14:27:08
【问题描述】:
我有一个简单的插入查询,但 Visual Studio 返回“INSERT INTO 命令中的语法错误”,我将完全相同的查询复制并粘贴到数据库(访问)中,它可以工作......有帮助吗??
public void Create(string mail, string nickname, string password, string avatar)
{
OleDbConnection cn = new OleDbConnection(_connectionString);
OleDbCommand cmd = new OleDbCommand();
try
{
String PwdSHA256;
SHA256 mySHA256 = SHA256.Create();
byte[] hashValue = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(password));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashValue.Length; i++)
{
builder.Append(hashValue[i].ToString("x2"));
}
PwdSHA256 = builder.ToString();
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO utenti ([email],[nickname],[password],[avatar],[attivo]) " +
"VALUES ('" + mail + "', '" + nickname + "', '" + PwdSHA256 + "','', false)";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
System.Web.HttpContext.Current.Session["errore"] = ex;
System.Web.HttpContext.Current.Response.Redirect("ErrorPage.aspx");
this._errore = ex.Message;
}
finally
{
cmd = null;
cn.Close();
}
}
【问题讨论】:
-
使用参数化语句或享受您的 SQL 注入攻击。
-
首先,
false不是插入中的布尔值,而是字符串。其次,@FranzGleichmann 所说的。 -
任何处理用户数据的程序员最终都会了解Bobby Tables。更多here