0

SQL Server 2008 で BLOB 列を更新する方法、Like でパターン マッチを実行しようとしていて、列を更新したいと考えています。

4

2 に答える 2

0

BLOBの更新は問題ありません。更新するだけです。「Likeでパターンマッチングを実行しようとしていますが、列を更新したいと思います。」それは不可能です。ブロブを検索することはできません。複雑な回避策があります。全文検索を有効にするのがおそらく最も簡単です。おもちゃのデータベースがあり、そもそもblobが本当に必要ない場合は、それをnvarchar(4000)としてキャストし、それを検索できます。これにより、行ごとにキャストが実行され、非常に遅い検索が実行され、次の場合にのみ機能します。あなたが探しているのは最初の4000文字です。

于 2012-05-29T20:40:37.647 に答える
0

http://www.akadia.com/services/dotnet_read_write_blob.htmlから:

// Read Image into Byte Array from Filesystem
byte[] photo = GetPhoto(photoFilePath);

// Construct INSERT Command
SqlCommand addEmp = new SqlCommand(
    "INSERT INTO Employees ("+
    "LastName,FirstName,Title,HireDate,ReportsTo,Photo) "+
    "VALUES(@LastName,@FirstName,@Title,@HireDate,@ReportsTo,@Photo)",_conn);

addEmp.Parameters.Add("@LastName",  SqlDbType.NVarChar, 20).Value = plastName;
addEmp.Parameters.Add("@FirstName", SqlDbType.NVarChar, 10).Value = pfirstName;
addEmp.Parameters.Add("@Title",     SqlDbType.NVarChar, 30).Value = ptitle;
addEmp.Parameters.Add("@HireDate",  SqlDbType.DateTime).Value     = phireDate;
addEmp.Parameters.Add("@ReportsTo", SqlDbType.Int).Value          = preportsTo;
addEmp.Parameters.Add("@Photo",     SqlDbType.Image, photo.Length).Value = photo;

// Open the Connection and INSERT the BLOB into the Database
_conn.Open();
addEmp.ExecuteNonQuery();
_conn.Close();



// **** Read Image into Byte Array from Filesystem
public static byte[] GetPhoto(string filePath)
{
    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);

    byte[] photo = br.ReadBytes((int)fs.Length);

    br.Close();
    fs.Close();

    return photo;
}

ドキュメントが次の場合、全文検索を実行できます。

.doc 
.txt 
.xls 
.ppt 
.htm 

参照: http://technet.microsoft.com/en-us/library/cc917636.aspx

于 2012-05-29T20:33:35.390 に答える