zoukankan      html  css  js  c++  java
  • C#操作varbinary(MAX)字段

    如果把照片直接保存在SQL Server数据库中,微软推荐用varbinary(MAX)字段。下面的代码演示了用C#操作varbinary(MAX)字段的基本方法。

    1、新增记录

            private void btnBrowse_Click(object sender, EventArgs e)//浏览照片
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Filter = "*.jpg(jpg文件)|*.jpg|*.gif|*.gif";
                dlg.FilterIndex = 1;
                if (dlg.ShowDialog()==DialogResult.OK)
                {
                    textBox3.Text = dlg.FileName;
                    pictureBox1.Image = Image.FromFile(dlg.FileName);
                }
            }

        //新增记录

                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
                {
                    String sql = "insert into emp(name,age,photo) values(@name,@age,@photo)";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("@name", textBox1.Text);
                    cmd.Parameters.AddWithValue("@age", Convert.ToInt32(textBox2.Text));
                    //byte[] b;
                    //using(FileStream fs=new FileStream(textBox3.Text,FileMode.Open,FileAccess.Read))
                    //{
                    //    b = new byte[fs.Length];
                    //    fs.Read(b, 0, (int)fs.Length);
                    //}
                    byte[] b;
                    if (textBox3.Text != "")
                    {
                        b = File.ReadAllBytes(textBox3.Text);
                        cmd.Parameters.AddWithValue("@photo", b);
                    }
                    else
                    {
                        cmd.Parameters.AddWithValue("@photo", System.Data.SqlTypes.SqlBinary.Null);
                    }
                    conn.Open();
                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {

                        MessageBox.Show(ex.Message);
                    }

                }

    2、显示记录信息并提供修改功能

            private void FormDetail_Load(object sender, EventArgs e)//显示记录详细信息
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
                {
                    String sql = "select * from emp where id=@id";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("@id", id);
                    conn.Open();
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if(dr.Read())
                        {
                            textBox1.Text = dr[1].ToString();
                            textBox2.Text = dr[2].ToString();
                            if (!dr.IsDBNull(3))//防止照片字段为空
                            {
                                System.Data.SqlTypes.SqlBytes bytes = dr.GetSqlBytes(3);
                                pictureBox1.Image=Image.FromStream(bytes.Stream);//显示照片
                            }
                        }
                    }
                }
            }

            private void btnSave_Click(object sender, EventArgs e)//更新记录
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
                {
                    byte[] b;
                    if (textBox3.Text != "")//需要更新照片
                    {
                        String sql = "update emp set name=@name,age=@age,photo=@photo where id=@id";
                        SqlCommand cmd = new SqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@name", textBox1.Text);
                        cmd.Parameters.AddWithValue("@age", Convert.ToInt32(textBox2.Text));
                        cmd.Parameters.AddWithValue("@id", id);
                        b = File.ReadAllBytes(textBox3.Text);
                        cmd.Parameters.AddWithValue("@photo", b);
                        conn.Open();
                        try
                        {
                            cmd.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {

                            MessageBox.Show(ex.Message);
                        }
                    }
                    else//不需要更新照片
                    {
                        String sql = "update emp set name=@name,age=@age where id=@id";
                        SqlCommand cmd = new SqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@name", textBox1.Text);
                        cmd.Parameters.AddWithValue("@age", Convert.ToInt32(textBox2.Text));
                        cmd.Parameters.AddWithValue("@id", id);
                        conn.Open();
                        try
                        {
                            cmd.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {

                            MessageBox.Show(ex.Message);
                        }
                    }              
                }
            }

  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/zhouhb/p/2910808.html
Copyright © 2011-2022 走看看