如何在image数据类型表中插入值

时间:2013-07-14 06:25:17

标签: sql-server sql-server-2012-express

我正在使用Sql-Server 2012.在其中我在Person表中创建了一个名为Image的列,其数据类型为image。请解释我怎样才能增加它的价值?我的意思是我应该定义任何照片的路径吗?或者是否有任何其他方式在此列中插入图像?期待您的指导

人 - 表名 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 个答案:

答案 0 :(得分: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}=@{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,否则为false     public bool ExtractBLOB(string aSQLCommand,string 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 ...