如何从SQL数据库中读取二进制数据

如何从SQL数据库中读取二进制数据,第1张

读出并生成到物理位置

public void Read()

{

byte[] MyData = new byte[0];

using (SqlConnection conn = new SqlConnection(sqlconnstr))

{

connOpen();

SqlCommand cmd = new SqlCommand();

cmdConnection = conn;

cmdCommandText = "select from T_img";

SqlDataReader sdr = cmdExecuteReader();

sdrRead();

MyData = (byte[])sdr["ImgFile"];//读取第一个的位流

int ArraySize= MyDataGetUpperBound(0);//获得数据库存储的位流数组的维度上限,用作读取流的上限

FileStream fs = new FileStream(@"c:\00jpg", FileModeOpenOrCreate, FileAccessWrite);

fsWrite(MyData, 0, ArraySize);

fsClose(); //-- 写入到c:\00jpg。

connClose();

ConsoleWriteLine("读取成功");//查看硬盘上的文件

}

}

下面我们将示例一个文件读取存储至数据库并从数据库中读取信息并显示的案例:

1、首先读取硬盘上的某一具体文件,读取模式设置为readBinary方式:

<cffile action = "readBinary" file = "temp directory here#fileserverFile#" variable = "test">

2、将读取出来的二进制内容存储至数据库中(注:数据库字段需设置成能存储类型的字段,如blob类型):

<cfquery datasource = "datasource">

insert into imageTest values (<cfqueryparam cfsqltype="cf_sql_blob" value="#test#">)

</cfquery>

通过1、2两个步骤,我们轻松实现了读取文件并存储至数据库的 *** 作过程。

3、从数据库中读取信息,该文件可命名为dispImagecfm:

<!--- 在此需特别注意enablecfoutputonly的压缩空白功能,如果不对该页面进行空白压缩,很可能会造成无法显示的问题 --->

<cfprocessingdirective suppressWhiteSpace="yes">

<cfsetting enablecfoutputonly="yes">

<!--- 读取相应的信息 --->

<cfquery datasource = "datasource">

select image from imageTest where variable here#

</cfquery>

<!--- 设置浏览器输出的格式,我们将它设置为的JPG类型,用户可根据实际情况改动类型设置 --->

<cfcontent type="image/jpg">

<!--- 输出 --->

<cfoutput>#toString(imageTestimage)#</cfoutput>

</cfprocessingdirective>

<cfabort>

4、显示内容,调用dispImagecfm页面:

<img src = "dispImagecfmid=your variable here">

通过3、4两个步骤,我们也很容易的就完成了从数据库中读取信息并在页面显示的功能。

总结:实际上,除了文件可以如此处理,其它的文件也能通过类似方式进行处理,可将任意文件类型存储至数据库,只是文件大小的原因以及数据库存储读取速度性能限制,我们基本上还是不建议将文件存储至数据库,毕竟硬盘读取要快得多。

//如下是将DB的数据放到DataTable

public DataTable SelSQL(String SQL)

{

DataTable Table = new DataTable();

SqlConnection myCon = new SqlConnection(LinkStr); //Linestr为连接路径

SqlCommand myCom = new SqlCommand(SQL, myCon);

myComCommandTimeout = 0;

SqlDataAdapter Adapter = new SqlDataAdapter(myCom);

try

{

AdapterFill(Table);

return Table;

}

catch (SqlException e)

{

MessageBoxShow(eMessage);

return Table;

}

finally

{

myComDispose();

}

}

//在调用的时候再定义一个DataTable

//最后再将数据一笔笔指派个excel栏位即可

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

解析:

select from tablename where id in (select top 20 id from (select top 100020 id from tablename order by id asc) temptablename order by id desc) order by id desc

这个语句就是取100001 ~ 100020 之间的20条记录。速度当然就是快,记住id是主键,弄清临时表中的id排序。

以上就是关于如何从SQL数据库中读取二进制数据全部的内容,包括:如何从SQL数据库中读取二进制数据、怎样读取数据库中存储的二进制图片文件、c# 从数据库读取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9860988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存