こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLiteで画像の格納

Visual Studio 11でC#でWindows Applicationをつくろうと素人が奮闘しています。

SQLiteで画像(どの画像も6kb前後)を保存したいのですが、どうしてもわかりません。

下記のSQLiteのラッパークラスを使わせていただいて、テキストを保存したり削除したりすることはできるようになりました。
http://jikkenjo.net/391.html
http://jikkenjo.net/567.html

できれば上記のラッパークラスを活かす形でいきたいのですけども、教えていただけないでしょうか。

次のようにテーブルを作成し
SQLiteConnector.Instance.ExecuteNonQuery("create table book(id integer primary key not null, title text, author text, image blob)");

画像を保存するにはまずデータをバイナリ化するということで、
Image img = 縮小したりクリッピングしたりした画像データ;
ImageConverter imgconv = new ImageConverter();
byte[] bi = (byte[])imgconv.ConvertTo(img, typeof(byte[]));
とし、下記のようにInsertすればいけると思ったのですが
SQLiteConnector.Instance.ExecuteNonQuery("insert into book(title, authorm image) values(?,?,?)", "book title", "book author", bi);
「渡された引数の型が処理できない形式です」とエラーが出てしまいます。

よろしくお願いいたします。

投稿日時 - 2012-01-02 21:48:57

QNo.7221677

すぐに回答ほしいです

質問者が選んだベストアンサー

getDbType を byte[] 型だと blobになるようにしてください。

投稿日時 - 2012-01-02 22:31:45

お礼

ありがとうございます。なるほどそこでしたか!
else if (unknown is Byte[])
{
//バイト
return DbType.Binary;
}
を追加することでいけたと思います。

それで、すいません、取り出しにはどうしたらいいのでしょうか。
string型なら、例にあるように出来ますが、byte型だとわかりません。
titleが"booktitle"がある行のimage列のセルを取り出したく

System.Data.SQLiteManager.SQLiteConnector.Result result = SQLiteConnector.Instance.ExecuteReader("select book.image from book where title = ?", "booktitle");

とし、 byte[] imgbyte = null;とするまでは合っていると思うのですが。
取り出せたらImageに変換してpictureboxに表示(確認のため)できると思うのですが。
よろしければ再度よろしくお願いいたします。

投稿日時 - 2012-01-03 00:35:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問