在SQL Server 2008 R2数据库中存储图像

时间:2012-02-28 09:02:19

标签: vb.net sql-server-2008 insert

我正在尝试使用SQL Server 2008将.png图像存储在数据库中。我使用mySQL做得很好但是出于某种原因它在将它放入ms SQL Server时看起来像这样:

0x89504E470D0A1A0A0000000D49484452000003160000031608060000006CBE..etc etc etc

列数据类型设置为图像。

以下是我用来将其插入系统的代码:

Dim SQL As String = "" & _
    "INSERT INTO dbo.thelabels (theV, theJID, theK, theS, theDRVorPAS, theImg, insertDayTime)" & _
    "VALUES ('" & theV & "', " & theJID & ", " & theK & ", " & theS & ", '" & theDRVorPAS & "', @img, '" & Format(DateTime.Now, "yyyy-MM-dd H:mm:ss") & "');"

    myCommandSQL.Connection = connSql
    myCommandSQL.Parameters.AddWithValue("@img", IO.File.ReadAllBytes(path))
    myCommandSQL.CommandText = SQL
    myCommandSQL.ExecuteNonQuery()
    connSql.Close()
    myCommandSQL.Dispose()

任何帮助都会很棒! :)

大卫

1 个答案:

答案 0 :(得分:3)

首先,我建议将列定义为VARBINARY(MAX)类型而不是IMAGE,它将是deprecated in a future version

其次,是什么让你认为它没有正确插入图像?如果您执行插入操作,然后在SSMS中查询该行,那么您将看到的是二进制数据的表示形式。在.NET中需要更多代码才能在显示时将二进制数据转换回图像形式。我没有尝试过这个工具,但是可能值得一看,以确定图像是否已经进入正常状态 - SQL Image Viewer