用c#替换数据库中的图像(使用UPDATE)
本文关键字:使用 UPDATE 图像 替换 数据库 | 更新日期: 2023-09-27 18:07:17
我有一个数据库,其中存储了图像,我想用新的图像替换这些图像。事情是这样的:我有一个图片框,在这个图片框中我正在下载一张图片。这个图像是我想用它来替换我的数据库的当前图像,其中我的列"Id"是6。现在我正试图用更新,但它不工作,我想知道为什么。下面是我的代码:
private void buttonReplace_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM [Insert_Image]"; //name of database
SqlDataAdapter dA = new SqlDataAdapter(sql, cn);
DataTable dT = new DataTable();
dA.Fill(dT);
int z = dT.Rows.Count + 1;
int i = 6;
try
{
cn.Open();
byte[] img = null;
FileStream fs = new FileStream(imgLoc, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
img = br.ReadBytes((int)fs.Length);
string strSql = "UPDATE [Insert_Image] SET Picture = " + @img + " WHERE Id LIKE '" + i + "'";
SqlCommand cmd = new SqlCommand(strSql, cn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(Convert.ToString(ex));
}
finally
{
cn.Close();
}
}
我的问题是,有些东西保存在我的数据库中,但无论我用这段代码保存什么,都不是图像的二进制代码。我检查了我的文件流,这是正确的,因为我使用的是我用于上传到图片框的相同文件流。如有任何帮助或建议,我将非常高兴。
不要在查询中硬编码值,而是使用。
cmd.Parameters.Addnew SqlParameter("@img", img));
查看SQL注入的备查表
string strSql = "UPDATE [tablename] SET Picture=@img WHERE Id LIKE '%@i%'";
SqlCommand cmd = new SqlCommand(strSql, cn);
cmd.Parameters.Add(new SqlParameter("@img", img));
cmd.Parameters.Add(new SqlParameter("@i", i));
cmd.ExecuteNonQuery();