• 締切済み

データベースからゼロが持って来れない

Java初心者です。(SQLも初心者ですが…) Javaからデータベースの値をResultSetクラスのgetStringメソッドで 持って来ようと思ったのですが、持ってこれなかった。 調べたところ、値が0の項目だったのですが(これはidがゼロということで正しい) getStringで持ってきた値を見たところ、空白でした。 (空白なのかnullなのかはよく分かりません) 環境: OS:Windows7 DB:MySQL 5.1.57-community Community Server (GPL) 開発環境:Eclipse3.7 JDBCドライバ:mysql-connector-java-5.1.17-bin.jar SQL文: create table entry(id char(3),provider char(50),url char(255),blogid char(20),account char(20),password char(20)); ※blogidのところに0が入ります。 insert into entry values ('002','goo','http://blog.goo.ne.jp/xmlrpc.php','0','実際のアカウントIDが入る','実際のパスワードが入る'); Java: Connection users = SQL.getConnection(); Statement state = users.createStatement(); ResultSet result = state.executeQuery("select * from entry"); String id = result.getString("id"); String provider = result.getString("provider"); String url = result.getString("url"); String blogid = result.getString("blogid"); String account = result.getString("account"); String password = result.getString("password"); ※System.out.printlnで確認すると、何も入ってない。 そこで質問ですが、 1.値が0だけ持って来れない(0以外の数値なら持ってこれた)原因は何でしょうか? 2.また、対処方法としては何が考えられるのでしょうか? すみませんが、よろしくお願いします。

みんなの回答

  • drg75
  • ベストアンサー率34% (98/288)
回答No.2

getStringではなくgetIntでも取れないでしょうか

  • drg75
  • ベストアンサー率34% (98/288)
回答No.1

javaからではなく、直接SQLでデータを表示したらどうなりますでしょうか。 あとはresultで以下のようにnextして読んでみてください。 ResultSet rs = st.executeQuery("・・・"); while(rs.next()) { } blogidに特定の値を許さない制約が無いかも気になります。

macdevelop
質問者

補足

回答ありがとうございます! >javaからではなく、直接SQLでデータを表示したらどうなりますでしょうか。 直接だと以下のように出ます。 ↓ mysql> select * from entry; +------+----------+----------------------------------+--------------+----------------+--------------+ | id | provider | url | blogid | account | password | +------+----------+----------------------------------+--------------+----------------+--------------+ | 001 | fc2 | http://blog.fc2.com/xmlrpc.php | 1192sasagawa | ●● | ●● | | 002 | goo | http://blog.goo.ne.jp/xmlrpc.php | 0 | ●● | ●● | +------+----------+----------------------------------+--------------+----------------+--------------+ >あとはresultで以下のようにnextして読んでみてください。 > >ResultSet rs = st.executeQuery("・・・"); > >while(rs.next()) { すみません。 あまり文章が長くならないように、ソースを端折って記載しました。 長くなりますが、現在のソースはこんな感じです。 Connection users = SQL.getConnection(); Statement state = users.createStatement(); ResultSet result = state.executeQuery("select * from entry"); String[][] para = new String[2][6]; int i = 0; while (result.next()) { String id = result.getString("id"); String provider = result.getString("provider"); String url = result.getString("url"); String blogid = result.getString("blogid"); String account = result.getString("account"); String password = result.getString("password"); para[i][0] = id; para[i][1] = provider; para[i][2] = url; para[i][3] = blogid; para[i][4] = account; para[i][5] = password; System.out.println(para[i][0]); System.out.println(para[i][1]); System.out.println(para[i][2]); System.out.println(para[i][3]); System.out.println(para[i][4]); System.out.println(para[i][5]); i++; } for (int h = 0; h < 2; h++) { for (int j = 0; j < 6; j++) { System.out.println(para[h][j]); } } > >blogidに特定の値を許さない制約が無いかも気になります。 > gooのブログなんですが、goo自体が0の値を入れてアクセスするよう 発表している?(おそらく)ので、0の値を入れています。 何か分かりましたらご教授お願いします。

関連するQ&A