2013-07-14 41 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

迈克尔·莫雷诺执行查询。 –

相关问题