dポイントプレゼントキャンペーン実施中!

私は現在データベースの勉強をしている学生です。
開発環境は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となってしまいます。

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

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

A 回答 (1件)

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



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

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

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

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

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

お礼日時:2011/03/11 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!