sql2008 二进制数据读取
有一个表里存在二进制字段,两个问题第一、字段类型是varbinary的,如何判断该字段数据格式,是字符,图片,还是其他第二、如果是图片,如何在管理器中用语句直接导出到磁盘...
有一个表里存在二进制字段,两个问题
第一、字段类型是varbinary的,如何判断该字段数据格式,是字符,图片,还是其他
第二、如果是图片,如何在管理器中用语句直接导出到磁盘。
谢谢 展开
第一、字段类型是varbinary的,如何判断该字段数据格式,是字符,图片,还是其他
第二、如果是图片,如何在管理器中用语句直接导出到磁盘。
谢谢 展开
1个回答
展开全部
是什么样的二进制数据格式你应该比较清楚,因为表是你建立的,这个字段存的是图片,字符,声音还是其它的你应该知道,最好的设计是就存一类东西,而不要做成通用性的,接手你开发的人也会觉得莫名其妙,不利于维护。
比如说你说怎么知道是图片,假如是位图文件,那么位图(BMP)有自己的文件头,这个文件头会告诉你位图的长,宽,像素位数等。当然图片还有其它格式。你别想着你编一个万能的程序能把世界上现有的一切格式都识别出来,即使识别出来了,效率也是十分低下的。
如果你定义这个字段是放图片的,你的程序就专门识别它是不是图片,即使是图片,格式也非常多,BMP,JPEG,PNG,GIF等等。建议你就放BMP的,这样识别专一,也快。
BMP的文件的格式直接百度百科里就有,官方网站也有,公开的。然后读取这个头结构大小的二进制数据,判断每个数据对应的标志即可识别图片。
同样是不是字符得开发者知道这个字段的用途,别想着一个字段是万能的,这种开发思路是不好的。如果你用它来放声音,声音的格式也好多,你想做得万能就得把世界上主流的声音格式的文件头结构清楚,然后做一个程序识别。当然现在可以借助一些DLL来弄。
如果字段里是图片,很简单首先用一些16进制编辑器,创建一个空的二进制文件,然后把这个字段里的内容复制粘贴到里面,如果这个图片是包含文件头的完整图片,假如是BMP,保存完之后文件名的后缀是BMP即可。一般都有文件头的,这个没必要省。开发者应该清楚这点。这是手工,如果你想用编程的语句自动弄,而且批量的,我对SQL的学习并不深入,没发现有能用SQL直接进行文件读写的操作语句。但是可以用C++实现,可以用ODBC编程。直接SDK也行,快速的方法是借助MFC里封装好的对ODBC操作的类,然后嵌入SQL语句,读取这个字段的内容,然后利用MFC里封装好的对文件操作的类,将这些数据写入即可。
呵呵,这些思路不知能否帮你。
比如说你说怎么知道是图片,假如是位图文件,那么位图(BMP)有自己的文件头,这个文件头会告诉你位图的长,宽,像素位数等。当然图片还有其它格式。你别想着你编一个万能的程序能把世界上现有的一切格式都识别出来,即使识别出来了,效率也是十分低下的。
如果你定义这个字段是放图片的,你的程序就专门识别它是不是图片,即使是图片,格式也非常多,BMP,JPEG,PNG,GIF等等。建议你就放BMP的,这样识别专一,也快。
BMP的文件的格式直接百度百科里就有,官方网站也有,公开的。然后读取这个头结构大小的二进制数据,判断每个数据对应的标志即可识别图片。
同样是不是字符得开发者知道这个字段的用途,别想着一个字段是万能的,这种开发思路是不好的。如果你用它来放声音,声音的格式也好多,你想做得万能就得把世界上主流的声音格式的文件头结构清楚,然后做一个程序识别。当然现在可以借助一些DLL来弄。
如果字段里是图片,很简单首先用一些16进制编辑器,创建一个空的二进制文件,然后把这个字段里的内容复制粘贴到里面,如果这个图片是包含文件头的完整图片,假如是BMP,保存完之后文件名的后缀是BMP即可。一般都有文件头的,这个没必要省。开发者应该清楚这点。这是手工,如果你想用编程的语句自动弄,而且批量的,我对SQL的学习并不深入,没发现有能用SQL直接进行文件读写的操作语句。但是可以用C++实现,可以用ODBC编程。直接SDK也行,快速的方法是借助MFC里封装好的对ODBC操作的类,然后嵌入SQL语句,读取这个字段的内容,然后利用MFC里封装好的对文件操作的类,将这些数据写入即可。
呵呵,这些思路不知能否帮你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询