把图片文件存入数据库

把图片文件或别的什么文件存入数据库原理上也不是特别复杂,会把字符串和数值存入数据库就肯定能学会把整个文件也存进数据库。要点就是把文件转换成字节数组存到数据库的Image类型字段里。

这里介绍两种方法把文件存入数据库,一种用DataSet,另一种不用DataSet。基本方式都一样,看个人喜好了。

用DataSet来做


// 将文件转化成流
FileStream fs = new FileStream(@"d:/a.jpg",FileMode.OpenOrCreate,FileAccess.Read);
byte[] FileData= new byte[fs.Length];
fs.Read(FileData,0,System.Convert.ToInt32(fs.Length));
fs.Close();

// 数据库
string strToMDB = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/x/db1.mdb;Persist Security Info=False;";
string strSQL = "select * from img";

OleDbConnection db = new OleDbConnection(strToMDB); // 创建联接
OleDbDataAdapter da = new OleDbDataAdapter(strSQL,db); // 适配器
OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // 自动产生SQL语句
DataSet ds = new DataSet("MyImg"); // 数据集

da.Fill(ds,"MyImg"); // 填充数据集

DataRow tmpRow; // 定义行
tmpRow = ds.Tables["MyImg"].NewRow(); // 数据集中增加一行

tmpRow["Title"]="This is Title."; // 数据行中各个字段赋值
tmpRow["Detail"]="This is Detail";
tmpRow["FileData"]=FileData;

ds.Tables["MyImg"].Rows.Add(tmpRow); // 增加这行
da.Update(ds,"MyImg"); // 通过适配器递交到数据库

// 清理资源
....

 

不用DataSet来做:

FileStream fs = new FileStream(@"c:/a.jpg", FileMode.Open, FileAccess.Read);
byte[] data = new byte[fs.Length];
fs.Read(data, 0, (int)fs.Length);
fs.Close();
fs.Dispose();

SqlConnection db = new SqlConnection(strConn);
db.Open();

string strSQL = "INSERT INTO t_FileBase (FileData,FileSize) values (@data,@size)";
SqlCommand cmd = new SqlCommand(strSQL, db);
cmd.Parameters.Add("@data", SqlDbType.Image, data.Length);
cmd.Parameters["@data"].Value = data;

cmd.Parameters.Add("@size", SqlDbType.Int);
cmd.Parameters["@size"].Value = data.Length;


cmd.ExecuteNonQuery();

// 清理资源
....
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值