2012-05-29 32 views

回答

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

+0

而這又是如何讓你搜索一個特定模式的blob? –

0

更新一個blob是沒有問題的,你只要更新它。 「我正在嘗試與Like進行模式匹配,並想更新列。」這是不可能的。你不能搜索斑點。有複雜的解決方法。你可以啓用全文搜索可能是最簡單的。如果你有一個玩具數據庫,並且首先不需要blob,你可以將它轉換爲nvarchar(4000)並搜索它,這將逐行進行強制轉換,執行一個非常緩慢的搜索,並且只在if你要找的是前4000個字符。