2012-02-28 14 views
2

SQL Server 2008を使用してデータベース内に.pngイメージを格納しようとしています。これはmySQLを使用して正常に処理しましたが、何らかの理由でms SQLサーバー:イメージをSQL Server 2008 R2データベースに保存する

0x89504E470D0A1A0A0000000D49484452000003160000031608060000006CBE..etc etc etc 

列のデータ型がimageに設定されています。

そして、ここでは、私がシステムに挿入するために使用していたコードです:

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

MS SQLの 'image'は、グラフィックデータそのものを格納するデータ型ではありません。 MS SQLには、グラフィカルデータを画像として表示する機能が組み込まれていません。 'image'データ型はバイナリデータを格納するためのレガシー形式です。 VARBINARY(MAX)を使用しても、標準のMS SQLツールではそれをピクチャとして表示することはできません。 – Jodrell

+3

** SQLインジェクション**攻撃について聞いたことがありますか? SQL文を連結してはいけません。特に、入力がユーザからのものでない場合は特に注意してください。代わりに、**パラメータ化されたクエリ**を使用する必要があります - **常に**、言い訳はありません。 –

答えて

3

まず

ダビデは、私が代わりにdeprecated in a future versionになります画像の種類VARBINARY(MAX)として列を定義するお勧めします。

第2に、画像を正しく挿入していないと思いますか?挿入を行い、SSMSでその行を照会すると、バイナリ・データの表現として表示されます。表示時にバイナリデータをイメージ形式に変換するには、.NETでさらに多くのコードが必要になります。私はこのツールを試していませんが、画像がOKになったかどうかを確認する価値があります - SQL Image Viewer

関連する問題