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

我的问题是,有些东西保存在我的数据库中,但无论我用这段代码保存什么,都不是图像的二进制代码。我检查了我的文件流,这是正确的,因为我使用的是我用于上传到图片框的相同文件流。如有任何帮助或建议,我将非常高兴。

用c#替换数据库中的图像(使用UPDATE)

不要在查询中硬编码值,而是使用。

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