【问题标题】:Insert and Update Image in sql在 sql 中插入和更新图像
【发布时间】:2020-03-30 20:08:17
【问题描述】:

我通过从图片框中读取图像,将图像存储到表 test (id, name, image) 中的数据库中。

这是我的代码:

private void browse_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.Filter = "(*.BMP;*.JPG;*.GIF;*.JPEG;*.PNG)|*.BMP;*.JPG;*.GIF;*.JPEG;*.PNG";
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        imgloc = openFileDialog1.FileName.ToString();
        pictureBox1.ImageLocation = imgloc;
    }
}

private void save_Click(object sender, EventArgs e)
{
    byte[] img = null;
    FileStream fs = new FileStream(imgloc, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    img = br.ReadBytes((int)fs.Length);
    SqlConnection CN = new SqlConnection(constring);
    string Query = "insert into test (id,name,image) values('" + txtid.Text + "','" + txtname.Text + "',@img)";
    CN.Open();
    cmd = new SqlCommand(Query, CN);
    cmd.Parameters.Add(new SqlParameter("@img", img)); 
    cmd.ExecuteNonQuery();
    CN.Close();
}

它有效,但我想知道如何在这里使用更新命令。

【问题讨论】:

  • 而不是insert使用UPDATE查询
  • “更新命令”是什么意思?

标签: c# sql


【解决方案1】:
private void update_Click(object sender, EventArgs e)
    {
        byte[] img = null;
        FileStream fs = new FileStream(imgloc, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);
        img = br.ReadBytes((int)fs.Length);
        SqlConnection CN = new SqlConnection(constring);

        // this is a smaple query for update statement and update where id=@id
        string Query = "update test set name=@name,image=@img where id=@id ";

        CN.Open();
        cmd = new SqlCommand(Query, CN);
        cmd.Parameters.Add(new SqlParameter("@img", img));
        cmd.Parameters.Add(new SqlParameter("@id", txtid.Text));
        cmd.Parameters.Add(new SqlParameter("@name", txtname.Text));
        cmd.ExecuteNonQuery();
        CN.Close();
    }

【讨论】:

    【解决方案2】:

    您的代码和查询应该是这样的:

    SqlConnection CN = new SqlConnection(constring);
    string Query = "Update test Set name=@Name,image=@Image where id=@id"
    CN.Open();
    cmd = new SqlCommand(Query, CN);
    cmd.Parameters.Add(new SqlParameter("@Image", img));
    cmd.Parameters.Add(new SqlParameter("@Name",txtname.Text));
    cmd.Parameters.Add(new SqlParameter("@id",txtid.Text));
    cmd.ExecuteNonQuery();
    CN.Close();
    

    【讨论】:

      【解决方案3】:

      如果更新很困难,只需使用您的 Id 字段删除该特定记录并再次触发保存查询。

      【讨论】:

        【解决方案4】:
         SqlConnection con = Connectionclass.SQLCONNECTION();
         SqlDataAdapter da = new SqlDataAdapter();
         string query = ("Update Doctor set ID ='" + idtxt.Text + "',Name='" + nametxt.Text + "',Contact='" + contactxt.Text + "',CNIC='" + cnictxt.Text + "',Address='" + addresstxt.Text + "',Qualification='" + qualitxt.Text + "',specialization='" + specialtxt.Text + "',Gender='" + gendertxt.Text + "',DOB='" + dobtxt.Text + "', Fee='"+textBox1.Text+"',Date='" + System.DateTime.Today.ToString("dd-MM-yyyy") + "', Picture= @image  where ID='" + idtxt.Text + "'");
         da.UpdateCommand = new SqlCommand(query, con);
         con.Open();
         da.UpdateCommand.Parameters.Add("image", SqlDbType.VarBinary).Value = binaryphoto;
         int RowsEffected = da.UpdateCommand.ExecuteNonQuery();
         con.Close();
        

        【讨论】:

        • 您好,感谢您的回答。请尝试按照您解决问题的步骤更好地解释您的解决方案。此外,在粘贴代码时,请记住使用 Ctrl+K 或反引号对其进行格式化。
        猜你喜欢
        • 2019-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        相关资源
        最近更新 更多