みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

binaryへのbyte配列の入れ方

私は現在データベースの勉強をしている学生です。
開発環境はJDBCを使い、SQLiteにデータを入れています。

最終的には画像データ(byte)をデータベースに中に入れようと思っているのですが、まずは手始めに数字を、binaryで宣言したデータベースの中に入れたのですが、おもうような結果が得られず困っています。

具体的にソースで説明させていただくと、
String sql1 = "create table Pointing (B binary)";
statement.executeUpdate(sql1);

byte[] b = new byte[2];
b[0] = 3;
b[1] = 2;
String sql2 = "insert into Pointing values(" + b[0] + b[1] + )";
statement.executeUpdate(sql2);

ResultSet rs2 = statement.executeQuery("select * from Pointing");
while(rs2.next())
{
byte[] b2 = rs2.getBytes("B");
System.out.println("B = " + b2[0]);
}

この結果が51となってしまいます。

正直、入れ方や取り出し方も全部いろんなサイトから引っ張ってきたり、憶測等で書いたものなので、やり方があっているとはおもっていません。なので正しい方法を知りたく書かせていただきました。

ご回答お待ちしております。

投稿日時 - 2011-03-07 18:10:56

QNo.6576282

すぐに回答ほしいです

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

> 正直、入れ方や取り出し方も全部いろんなサイトから引っ張ってきたり、憶測等で書いたものなので、やり方があっているとはおもっていません。

んじゃ、まず、C# と SQLite のマニュアルを読みましょう。

C# やら、PHP やら、文字列主体の言語では、とりあえず、文字列に暗黙の型変換が行われる。

51 というのは要するに、カラムに 文字列 '32' が代入され、その最下位バイト '3' を読んだために、51 が表示されている。

クエリが通っただけまし、位に思ったほうがいいかもしれない。
普通はバインドを使い、何だか分からないものを突っ込っこむような野蛮なことはしない。

投稿日時 - 2011-03-08 03:02:31

お礼

いわれた通りバインドを使ったら、問題なくいれることができました。
ありがとうございました。

投稿日時 - 2011-03-11 23:29:00

ANo.1

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

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

回答(1)

あなたにオススメの質問