请教:如何在c#中对ACCESS数据库中的ole类型数据进行打开、存储等操作。
请交各位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




