バイナリデータをDBに格納
- 題名: バイナリデータをDBに格納
- 著者: ライム
- 日時: 2009/03/24 14:54:43
- ID: 24268
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: バイナリデータをDBに格納
- 著者: オショウ
- 日時: 2009/03/24 19:17:29
- ID: 24271
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: バイナリデータをDBに格納
- 著者: オショウ
- 日時: 2009/03/24 22:50:20
- ID: 24272
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: バイナリデータをDBに格納
- 著者: ライム
- 日時: 2009/03/26 11:46:07
- ID: 24276
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: バイナリデータをDBに格納
- 著者: オショウ
- 日時: 2009/03/26 14:40:53
- ID: 24277
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: バイナリデータをDBに格納
- 著者: ライム
- 日時: 2009/03/27 10:12:12
- ID: 24281
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
VB.NetとPostgreSQLにて開発をしています。
サーバにあるファイル(Excel,PDF等)をバイナリデータとしてDBに格納したいのですが、
うまくいきません。
(そもそもファイルをDBに格納すべきでないという事実は調べましたが…)
サンプルコードを下記に記述します。
DB(テーブル)の内容は
No Char(10)
File Bytea
です。
Dim path As String = "ファイルパス"
Dim no As String = "no00000001"
Dim con As New OdbcConnection(prvStrConnection)
Dim com As New OdbcCommand()
com.Connection = con
Dim fs As New FileStream(path, FileMode.Open, FileAccess.Read)
Dim bs(fs.Length - 1) As Byte
fs.Read(bs, 0, bs.Length)
Dim query As String = "INSERT INTO テーブル名 (no,file) " & _
"VALUES ('@no','@file');"
com.Parameters.Clear()
com.Parameters.Add("@no", OdbcType.Char).Value = no
com.Parameters.Add("@file", OdbcType.Binary).Value = bs
com.CommandText = query
con.Open()
com.ExecuteNonQuery() ※1
con.Close()
エラー発生箇所は※1で、内容は
"ERROR [22001] ERROR: value too long for type character(10); Error while executing the query"
ERROR [22001] の内容は"文字列データの右側の切り詰め"
でした。
パラメータを追加する際の型が間違えているのかと思い、
「VarChar」なども指定してみたのですが、同じエラーが発生しました。
よろしければご指摘をお願い致します。