我收到此错误
我不明白为什么我一直收到此错误,因为我的插入声明中甚至没有任何多值字段。
con = new OleDbConnection(cs);
con.Open();
string fnum = lblFNum.Text;
string num = lblPnum.Text.ToString();
FileInfo file = new FileInfo(lblFile.Text);
string a = "INSERT INTO Documents([FileNumber], [ProjectID], [File]) VALUES('" + fnum + "','" + num + "','" + file + "')";
cmd = new OleDbCommand(a);
cmd.Connection = con;
cmd.ExecuteReader();
con.Close();
MessageBox.Show("Document Successfully Added", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Information);
我需要用什么代码来解决这个问题?
答案 0 :(得分:0)
首先,您应该在查询中使用参数,它将阻止SQL注入。
其次,您试图将FileInfo
放入查询中,但这不起作用。您必须将文件读入byte []并将其保存到数据库中。
示例:
var fileData = File.ReadAllBytes(lblFile.Text); // You should also check if file exists...
cmd.CommandText = "INSERT INTO Documents([FileNumber], [ProjectID], [File]) VALUES(@fileNumber, @projectId, @file)";
cmd.Parameters.AddWithValue("@fileNumber", fnum);
cmd.Parameters.AddWithValue("@projectId", num);
cmd.Parameters.AddWithValue("@file", fileData);