利用ADONET中的OleDbConnection\OleDbCommand 可以方便的对SQL Server中的二进制文件进行更新操作下面是详细的代码演示
演示环境
数据库机器名 s_test
登陆名 sa
密码
数据库名 db_test
下面建立一个表
create table tb_test(id int identity()photo image constraint pk_tb_test primary key(id))
一将硬盘上的文件保存至数据库(C#)
//
//
//下面的示例将c:\txt文件保存至数据库的tb_test表中
//
//
using System;
using SystemIO;?
using SystemData;
using SystemDataOleDb;
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=;initial catalog=db_test);
OleDbCommand cmd = new OleDbCommand(INSERT tb_test(photo) VALUES(?)cn);
//打开文件
FileStream fs = new FileStream(c:\\txt FileModeOpen FileAccessRead);
Byte[] b = new Byte[fsLength];
fsRead(b bLength);
fsClose();
//打开连接
OleDbParameter prm = new OleDbParameter(@photoOleDbTypeVarBinary bLength?
ParameterDirectionInput false nullDataRowVersionCurrent b);
cmdParametersAdd(prm);
cnOpen();
//执行
if (cmdExecuteNonQuery() == )
ConsoleWriteLine(OK);
else
ConsoleWriteLine(Fail);?
cnClose();
}
catch(Exception ex)
{
ConsoleWriteLine(exMessage );
}
}
}?
二更新数据库中保存的文件
//
//
//下面的示例用将数据库的tb_test表中ID=的记录的photo更新为c:\txt
//
//
using System;
using SystemIO;?
using SystemData;
using SystemDataOleDb;
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=;initial catalog=db_test);
OleDbCommand cmd = new OleDbCommand(UPDATE tb_test SET photo= ? WHERE ID=cn);
//打开文件
FileStream fs = new FileStream(c:\\txt FileModeOpen FileAccessRead);
Byte[] b = new Byte[fsLength];
fsRead(b bLength);
fsClose();
//打开连接
OleDbParameter prm = new OleDbParameter(@photoOleDbTypeVarBinary bLength?
ParameterDirectionInput false nullDataRowVersionCurrent b);
cmdParametersAdd(prm);
cnOpen();
//执行
if (cmdExecuteNonQuery() == )
ConsoleWriteLine(OK);
else
ConsoleWriteLine(Fail);?
cnClose();
}
catch(Exception ex)
{
ConsoleWriteLine(exMessage );
}
}
}