2013-07-14 82 views
2

我正在使用Sql-Server 2012.在它中,我在Person表中創建了一個名爲Image with datatype image的列。請解釋一下,我該如何增加它的價值?我的意思是我應該定義任何照片的路徑?或者有沒有其他的方法可以在這個列中插入圖像?期待您的蒞臨指導如何在圖像數據類型表中插入值

人--Table名 PERSON_NAME - 列名和數據類型爲nvarchar(50) 圖片 - 列名和數據類型的圖像 日期 - 列名和數據類型日期

或插入就像是:'

INSERT INTO Person Values 
('Person34', ' 
SELECT * 
     FROM OPENROWSET 
     (BULK 'C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg',SINGLE_CLOB)' , '2013-09-08'); 

` 謝謝。

回答

1

這是我如何將圖像保存在BLOB/Image DB字段中。

/// <summary> 
/// Saves the file into a BLOB/Image field in the DB 
/// This uses an UPDATE command, therefore the record must alreay exist in the DB 
/// </summary> 
/// <param name="aTableName"></param> 
/// <param name="aFieldName"></param> 
/// <param name="aWhereClause"></param> 
/// <param name="aFileName"></param> 
/// <returns></returns> 
public bool SaveToBLOB(string aTableName, string aFieldName, string aWhereClause, string aFileName) 
{ 
    string sSQL = string.Format("UPDATE {0} SET {1}[email protected]{1} WHERE {2}", aTableName, aFieldName, aWhereClause); 
    using (SqlCommand oComm = new SqlCommand(sSQL, m_Conn)) 
    { 
    byte[] wFileAsByteArr = CDBConn.GetFileAsByteArray(aFileName); 

    oComm.Parameters.Add("@" + aFieldName, SqlDbType.Image, wFileAsByteArr.Length).Value = wFileAsByteArr; 
    return oComm.ExecuteNonQuery() > 0; 
    } 
} 

這就是我如何找回它: /// ///提取指定的SQL命令的第一個字段(BLOB),並將其保存爲文件 /// /// /// /// true如果文件被創建,否則爲假 公共BOOL ExtractBLOB(串aSQLCommand,串aFileName) { 使用(的SqlCommand oComm = CreateCommand()){ oComm.CommandText = aSQLCommand; oComm.CommandType = CommandType.Text;

 // Create a file to hold the output. 
     using (System.IO.FileStream fs = new System.IO.FileStream(aFileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write)) 
     { 
      using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs)) 
      { 
       byte[] b = (byte[])oComm.ExecuteScalar(); 
       if (b != null) 
       { 
        bw.Write(b); 
        bw.Flush(); 
        return true; 
       } 
       else 
        return false; 
      } 
     } 
    } 
} 

凡aSQLCommand將是:SELECT MyImageField FROM TableABC WHERE ...

+0

謝謝你的分享,但我希望在SQL服務器20102. –

+0

邁克爾·莫雷諾執行查詢。 –

相關問題