[转载]Reading part of the 'Image' Sql Server BLOB

本文介绍了一种在SQL Server 2000中通过读取BLOB数据前5字节来快速判断文件是否为XML格式的方法,避免了下载整个文件进行检查的效率问题。

I am storing an ammount of files, of different types, as BLOBs in my Sql Server 2000 database.

Some of these are XML files, inside of which are some addresses I'd like to read.

However, I don't want to download a 2MB JPG image from the db, just to find out it isn't an XML file!

My best solution after playing around was to extract the first 5 bytes from the data, to determine if I should go ahead and use the whole thing:


 

// Get the 'Image' SQL Type

SqlDataReader sqlDataReader = selectDataCommand.ExecuteReader(CommandBehavior.SequentialAccess);

// If successful

if (sqlDataReader.Read())

{

             int bufferSize = 5;

             byte [] outbyte = new byte [bufferSize];

              long startIndex = 0;

             // Read the first 5 bytes

             long retval = sqlDataReader.GetBytes(0, startIndex, outbyte, 0, bufferSize);

            // Translate bytes to string

           string test = FromASCIIByteArray(outbyte);

           // Do the first 5 characters match an XML header?

           if (test.CompareTo("<?xml") == 0)

           {

                     // Get entire file here

           }

}


 

This is quicker, but I know it can't be the quickest way. I am trying to find out how to write a stored prodecure that will do the same on the SQL Server side.

And yes, I could just add an extra byte column to my table to designate the file as XML, but I am interested in how to parse Image data types on the SQL Side.

I'll update when I find out how :)

From:http://dotnetjunkies.com/WebLog/andrewwhitten/archive/2004/03/20/9569.aspx

转载于:https://www.cnblogs.com/smartstone/archive/2006/08/09/471751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值