SQL Server:存储图像和BLOB文件(三)
2008-04-14 09:54:30 来源:WEB开发网现在,图像数据就可以传递进入SQL参数,并运行了:
paramFileData.Value=bImage;
objCmd.ExecuteNonQuery();
运行该应用程序
在浏览器中查看该网页,点击浏览按钮。这时会出现一个如下所示的文件选择窗口:
浏览文件夹选择好文件后点击完成按钮,就会执行上面创建的SQL存储过程。在SQL Server内部查看运行结果,会显示有二进制数据,但不会显示数据的真实内容:
因为SQL Server本身不带有BLOB浏览器,所以我们要自动动手制作一个类似于前一篇文章所示的浏览器,不同的是这个浏览器通过存储过程驱动的。
浏览器
创建一个简单的可以选择图像数据的存储过程,T-SQL代码如下:
CREATEPROCEDUREBLOBViewer
AS
SELECTBLOBData
FROMBLOBFromWeb
接下来,制作一个代码分离的aspx网页。在代码分离页面添加SQL Server的使用语句:
usingSystem.Data.Sql;
usingSystem.Data.SqlClient;
在Page_load的部分,使用下面的代码执行刚刚创建的存储过程:
stringsConn=@"server=.;database=BLOBTest3;IntegratedSecurity=True";
SqlConnectionobjConn=newSqlConnection(sConn);
objConn.Open();
SqlCommandobjCmd=newSqlCommand("BLOBViewer",objConn);
objCmd.CommandType=CommandType.StoredProcedure;
SqlDataReaderdr=objCmd.ExecuteReader();
dr.Read();
Response.BinaryWrite((byte[])dr["BLOBData"]);
objConn.Close();
这里的网页浏览器代码和前一篇文章中的代码很相似,不过把CommandType变成了Stored Procedure,而且SQLCommand的执行使用了该存储过程名而不是一串SQL字符串。
总结
SQL Server可以作为存储图像和BLOB数据的便携容器使用,不过处理二进制数据和处理ASCII有所不同:存储在SQL Server内部的数据并不像字符数据那样能看到它们是什么样子的;此外,在将数据发送到SQL Server之前,还需要对数据进行一些特殊处理,例如使用字节数组。不过总体而言,在SQL Server中使用和存储BLOB文件还是很有价值的。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接