CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请教:如何在c#中对ACCESS数据库中的ole类型数据进行打开、存储等操作。

楼主flyonsky2006()2006-06-01 18:14:07 在 .NET技术 / C# 提问

请交各位c#高手们。如何在c#中对ACCESS数据库中的ole类型数据进行打开、存储等操作。 问题点数:80、回复次数:7Top

1 楼chenyuming2004(这辈子我算是废了)回复于 2006-06-02 09:19:02 得分 0

当成二进制来处理.  
  参考在ACCESS中读取,写入图片.Top

2 楼kssys()回复于 2006-06-02 09:20:25 得分 0

把要写入的数据转换成byte[],再写入。Top

3 楼flyonsky2006()回复于 2006-06-02 21:39:38 得分 0

谢谢上面几位高手的热心帮助!  
  由于小弟是初次学习C#,不是很熟悉!  
   
  我已经通过查找可以知道可以把有格式将文本和图片转化成长二进制存放在access数据库中的ole类型字段中。但是请教各位高手们告诉我  
    如何将文本和图片转换成长二进制存放在access数据库中,又如何从数据库中的ole类型字段中读出数据!!!  
  再次恳请给为高手给我指导!不胜感激!!!Top

4 楼Knight94(愚翁)回复于 2006-06-03 07:50:37 得分 0

你如何存的,就如何取出来,存在ole字段都是byte流数据。  
  参看  
  http://blog.csdn.net/knight94/archive/2006/03/24/637800.aspxTop

5 楼amandag(高歌)回复于 2006-06-03 07:53:17 得分 80

//将C#数据以长二进制数据保存于Access数据库northwind.mdb  
  using   System;  
  using   System.IO;  
  using   System.Data;  
  using   System.Data.OleDb;  
   
  class   BLOBDemo  
  {  
  [STAThread]  
  static   void   Main(string[]   args)  
  {  
  Add("Test","2.jpg");  
  }  
   
  public   static   void   Add(string   categoryName,   string   filePath)  
  {  
   
  FileStream   fs   =   new   FileStream(filePath,   FileMode.Open,   FileAccess.Read);  
  BinaryReader   br   =   new   BinaryReader(fs);  
   
  byte   []   photo   =   br.ReadBytes((int)fs.Length);  
   
  br.Close();  
  fs.Close();  
   
  OleDbConnection   cn   =   new   OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=northwind.mdb");  
  OleDbCommand   cmd   =   new   OleDbCommand("INSERT   INTO   类别(类别名称,   图片)   VALUES   (@CategoryName,   @Picture)",   cn);  
   
  cmd.Parameters.Add("@CategoryName",   OleDbType.VarChar,15).Value   =   categoryName;  
  cmd.Parameters.Add("@Picture",   OleDbType.Binary,   photo.Length).Value   =   photo;  
   
  cn.Open();  
  cmd.ExecuteNonQuery();  
  cn.Close();  
  }  
  }  
   
  Top

6 楼amandag(高歌)回复于 2006-06-03 07:53:30 得分 0

//从Access数据库northwind.mdb取出长二进制数据  
  using   System;  
  using   System.IO;  
  using   System.Data;  
  using   System.Data.OleDb;  
   
  class   BLOBDemo  
  {  
  [STAThread]  
  static   void   Main(string[]   args)  
  {  
   
  OleDbConnection   cn   =   new   OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=northwind.mdb");  
  OleDbCommand   cmd   =   new   OleDbCommand("Select   类别ID,图片   FROM   类别   where   类别名称='Test'",   cn);  
   
  FileStream   fs;  
  BinaryWriter   bw;  
   
  //缓冲区大小  
  const   int   bufferSize   =   100;  
  byte   []   outByte   =   new   byte[bufferSize];  
  //GetBytes返回的字节数量  
  long   retval   =   0;  
  //BLOB输出的起始位置  
  long   startIndex   =   0;  
   
  string   id   =   "";  
   
  cn.Open();  
   
  OleDbDataReader   dr   =   cmd.ExecuteReader(CommandBehavior.SequentialAccess);  
   
  while(dr.Read())  
  {  
  id   =   dr.GetValue(0).ToString();  
   
  fs   =   new   FileStream(id   +   ".bmp",   FileMode.OpenOrCreate,   FileAccess.Write);  
  bw   =   new   BinaryWriter(fs);  
   
  startIndex   =   0;  
  retval   =   dr.GetBytes(1,   startIndex,   outByte,   0,   bufferSize);  
  while(retval   ==   bufferSize)  
  {  
  bw.Write(outByte);  
  bw.Flush();  
  startIndex   +=   bufferSize;  
  retval   =   dr.GetBytes(1,   startIndex,   outByte,   0,   bufferSize);  
  }  
   
  bw.Write(outByte,   0,   (int)retval   -   1);  
  bw.Flush();  
   
  bw.Close();  
  fs.Close();  
  }  
   
  dr.Close();  
  cn.Close();  
  }  
  }  
   
  Top

7 楼amandag(高歌)回复于 2006-06-03 07:54:09 得分 0

你这个帖子已经发过两次了,我上次就已经回复过Top

相关问题

关键词

得分解答快速导航

  • 帖主:flyonsky2006
  • amandag

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo