C# 图片或PDF保存到SQL Server数据库

C# 图片或PDF保存到SQL Server数据库

数据库字段如下:图片保存要用image数据类型

在这里插入图片描述

保存到数据库的两种方式:

 // 打开文件,获取图片路径
 OpenFileDialog openFileDialog = new OpenFileDialog();
 if (openFileDialog.ShowDialog() == DialogResult.Cancel)
 {
   
     return;
 }

 //pictureBox1.Image = Image.FromFile(openFileDialog.FileName);

 FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
 //通过BinaryReader类对象的ReadBytes()方法将FileStream类对象转化为二进制数组
 BinaryReader br = new BinaryReader(fs);
 byte[] img = br.ReadBytes(Convert.ToInt32(fs.Length));
 
  // 方法一:通过参数的形式直接用Sql语句保存
 string insert = "insert into T_Img(ID,Img) values(@ID,@Img)";
 SqlParameter[] parameter = new SqlParameter[]
 {
   
     new SqlParameter("@ID", Convert.ToInt32(textBox1.Text)),
     new SqlParameter("@Img", img)
 };
 db.ExcuteBySqlParmeter(insert, parameter);

 // 方法二:使用SqlBulkCopy
 string sql = "select top 0 * from T_Img";
 DataSet ds = db.LoadDataSetBySql(sql);
 DataTable dtImg = ds.Tables[0];

 DataRow dr = dtImg.NewRow();
 dr["ID"] = Convert.ToInt32(textBox1.Text);
 dr["Img"] = img;
 dtImg.Rows.Add(dr);

 db.SaveImg(dtImg, "T_Img");

上面的ExcuteBySqlParmeter()和SaveImg()方法的详细代码如下:

public int ExcuteBySqlParmeter(string sql, SqlParameter[] sqlParmeter)
{
   
     int ir = 0;
     try
     {
   
      	 // GetConn():获取一个SqlConnection对象
         SqlCommand comm = new SqlCommand(sql, GetConn());
         comm.Parameters.AddRange(sqlParmeter);
         ir = comm.ExecuteNonQuery();
         CloseConn();
     }
     catch
     {
   
         ir = 0;
     }

     return ir;
}
 
public int SaveImg(DataTable dataTable, string TableName)
{
   
    int ir;
    try
    {
   
        SqlBulkCopy bulkCopy = new SqlBulkCopy(GetConn());  
        bulkCopy.DestinationTableName = TableName;//设置目标表的名称
        bulkCopy.WriteToServer(dataTable);  //保存
        ir = 1;
    }
    catch
    {
   
        ir = 0;
    }
    return ir;
}

从数据库读取图片并显示

private void GetImg()
{
   
    string sql = $"select top 1 * from T_Img where ID = {
     textBox1.Text}";
    DataSet ds = db.LoadDataSetBySql(sql);
    DataRow dr = ds.Tables[0].Rows[0];
    byte[] bytes = (byte[])dr["Img"];
    MemoryStream ms = new MemoryStream(bytes);
    this.pictureBox2.Image = Image.FromStream(ms);
}

相关推荐

  1. 实现将信息作为txt,pdf,图片的形式保存电脑~

    2024-01-30 06:14:09       50 阅读
  2. opencv保存图片-------c++

    2024-01-30 06:14:09       28 阅读
  3. Python应用—从pdf保存图片

    2024-01-30 06:14:09       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 06:14:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 06:14:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 06:14:09       87 阅读
  4. Python语言-面向对象

    2024-01-30 06:14:09       96 阅读

热门阅读

  1. 发票pdf文件解析

    2024-01-30 06:14:09       61 阅读
  2. jenkins job无法停止

    2024-01-30 06:14:09       56 阅读
  3. npm 安装时卡在 sill idealTree buildDeps 不动

    2024-01-30 06:14:09       49 阅读
  4. 将图片批量导入PPT

    2024-01-30 06:14:09       70 阅读
  5. RabbitMQ

    RabbitMQ

    2024-01-30 06:14:09      39 阅读
  6. ElasticSearch 8.x 版本如何使用 SearchRequestBuilder 检索

    2024-01-30 06:14:09       45 阅读
  7. ZK和ETCD的产品对比和差异

    2024-01-30 06:14:09       63 阅读