c#数据库存取二进制文件

利用ADO.NET中的OleDbConnection\OleDbCommand   可以方便的对SQL   Server中的二进制文件进行更新操作,下面是详细的代码演示  
   
   
  演示环境:  
   
  数据库机器名 :s_test  
  登陆名 :sa  
  密码 :7890  
  数据库名     db_test  
   
  下面建立一个表:  
  create   table   tb_test(id   int   identity(1,1),photo   image   ,constraint   pk_tb_test   primary   key(id))  
   
  一、将硬盘上的文件保存至数据库(C#)  
   
  //----------------------------------------------------------  
  //----------------------------------------------------------  
  //下面的示例将c:\1.txt文件保存至数据库的tb_test表中  
  //----------------------------------------------------------  
  //----------------------------------------------------------  
   
  using   System;  
  using   System.IO;    
  using   System.Data;  
  using   System.Data.OleDb;  
     
  class   image_test  
  {  
  [STAThread]  
  static   void   Main(string[]   args)  
  {  
  try  
  {  
  //初始化OleDbConnection和OleDbCommand  
  OleDbConnection   cn   =   new   OleDbConnection("provider=sqloledb;server=s_test;user   id=sa;password=7890;initial   catalog=db_test");  
  OleDbCommand   cmd   =   new   OleDbCommand("INSERT   tb_test(photo)   VALUES(?)",cn);  
   
  //打开文件  
  FileStream   fs   =   new   FileStream("c:\\1.txt",   FileMode.Open,   FileAccess.Read);  
  Byte[]   b   =   new   Byte[fs.Length];  
  fs.Read(b,   0,   b.Length);  
  fs.Close();  
   
  //打开连接  
  OleDbParameter   prm   =   new   OleDbParameter("@photo",OleDbType.VarBinary   ,b.Length,    
  ParameterDirection.Input,   false,   0,   0,   null,DataRowVersion.Current,   b);  
  cmd.Parameters.Add(prm);  
  cn.Open();  
   
  //执行  
  if   (cmd.ExecuteNonQuery()   ==   1)  
  Console.WriteLine("OK");  
  else  
  Console.WriteLine("Fail");    
  cn.Close();  
  }  
  catch(Exception   ex)  
  {  
  Console.WriteLine(ex.Message   );  
  }  
  }  
  }        
   
   
   
  三、更新数据库中保存的文件  
   
  //----------------------------------------------------------  
  //----------------------------------------------------------  
  //下面的示例用将数据库的tb_test表中ID=1的记录的photo更新为c:\1.txt  
  //----------------------------------------------------------  
  //----------------------------------------------------------  
   
  using   System;  
  using   System.IO;    
  using   System.Data;  
  using   System.Data.OleDb;  
     
  class   image_test  
  {  
  [STAThread]  
  static   void   Main(string[]   args)  
  {  
  try  
  {  
  //初始化OleDbConnection和OleDbCommand  
  OleDbConnection   cn   =   new   OleDbConnection("provider=sqloledb;server=s_test;user   id=sa;password=7890;initial   catalog=db_test");  
  OleDbCommand   cmd   =   new   OleDbCommand("UPDATE   tb_test   SET   photo=   ?   WHERE   ID=1",cn);  
   
  //打开文件  
  FileStream   fs   =   new   FileStream("c:\\1.txt",   FileMode.Open,   FileAccess.Read);  
  Byte[]   b   =   new   Byte[fs.Length];  
  fs.Read(b,   0,   b.Length);  
  fs.Close();  
   
  //打开连接  
  OleDbParameter   prm   =   new   OleDbParameter("@photo",OleDbType.VarBinary   ,b.Length,    
  ParameterDirection.Input,   false,   0,   0,   null,DataRowVersion.Current,   b);  
  cmd.Parameters.Add(prm);  
  cn.Open();  
   
  //执行  
  if   (cmd.ExecuteNonQuery()   ==   1)  
  Console.WriteLine("OK");  
  else  
  Console.WriteLine("Fail");    
  cn.Close();  
  }  
  catch(Exception   ex)  
  {  
  Console.WriteLine(ex.Message   );  
  }  
  }  
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值