你好,你能帮助我吗
private void button2_Click(object sender, EventArgs e)
{
Byte[] IMAGES = null;
FileStream STREAM = new FileStream(IMGLOCATION, FileMode.Open, FileAccess.Read);
BinaryReader BSR = new BinaryReader(STREAM);
IMAGES = BSR.ReadBytes((int)STREAM.Length);
CON.Open();
string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES('"+textBox2.Text+"','"+textBox1.Text+"'.'"+textBox3.Text+ "',@IMG,'" + textBox4.Text + "')";
CMD = new SqlCommand(SQLQUERY,CON);
CMD.Parameters.Add(new SqlParameter("@IMG", IMAGES));
int N = CMD.ExecuteNonQuery();
CON.Close();
MessageBox.Show("USER CREATED SUCCESSFULLY");
}
当我尝试使用密码12345
' 12345
附近的语法不正确
答案 0 :(得分:5)
... +textBox1.Text+"'.'"+textBox3.Text+ ...
^
|
change this dot to comma
之后,我建议重写您的查询以使用所有注入值的参数。
答案 1 :(得分:3)
我认为你需要TextBox1和TextBox3之间的逗号
string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES('"+textBox2.Text+"','"+textBox1.Text+"','"+textBox3.Text+ "',@IMG,'" + textBox4.Text + "')";
答案 2 :(得分:0)
你的问题只是语法;你在textBox1.Text+"'.'"+textBox3.Text
另一个问题是您需要使用参数化查询。
以下是您更新的代码以使用参数化...
private void button2_Click(object sender, EventArgs e)
{
Byte[] IMAGES = null;
FileStream STREAM = new FileStream(IMGLOCATION, FileMode.Open, FileAccess.Read);
BinaryReader BSR = new BinaryReader(STREAM);
IMAGES = BSR.ReadBytes((int)STREAM.Length);
CON.Open();
string SQLQUERY = "INSERT INTO USERS (FULNAME,USERNAME,PASSWORD,IMAGE,STATUS)VALUES(@name, @username, @password, @IMG, @status)";
CMD = new SqlCommand(SQLQUERY,CON);
CMD.Parameters.AddWithValue("@name", textBox2.Text);
CMD.Parameters.AddWithValue("@username", textBox1.Text);
CMD.Parameters.AddWithValue("@password", textBox3.Text);
CMD.Parameters.Add(new SqlParameter("@IMG", IMAGES));
CMD.Parameters.AddWithValue("@status", textBox4.Text);
int N = CMD.ExecuteNonQuery();
CON.Close();
MessageBox.Show("USER CREATED SUCCESSFULLY");
}
另一个问题是你没有加密密码,但我猜你最终会达到这个目的,或者只是为了创建一个小问题而把它拿出来。