- - PR -
MySQLでキー以外すべて最終行の値が返ってくる
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-17 18:12
どうもMySQL側の問題のような気もするのですが、間違いがありましたらご指摘をお願い致します。
テーブル名 TEST に、 ID char(5) primary key, NAME varchar(20) not null, AGE int の列を作成し、 '00001', '山田 太郎', 15 '00002', '佐藤 花子', 16 '00003', '田中 美沙', 17 の3行を登録しました。 そこに、以下のコードで書かれたメソッドに SELECT * FROM TEST の文を投げたところ、以下のような結果が返ってきました。 '00001', '田中 美沙', 17 '00002', '田中 美沙', 17 '00003', '田中 美沙', 17 SQL文を変更して、 SELECT * FROM TEST ORDER BY AGE とすると正常に出力されました。 データセットのコードは以下の通りです。何かとんでもない勘違いがありましたらご指摘をお願い致します。
動作環境 Windows XP HomeEdition Apache 2.0.49 + Tomcat 5.0.27 + MySQL 5.0.0a | ||||
|
投稿日時: 2004-07-18 00:00
データ取得時のSQLと表示部分のソースがないんで何ともいえないんですが、
とりあえず、SQLとプログラムのどちらが原因か明確にしてみてはいかがでしょう? MySQLクライアントで同じSQLを実行してみて同じ結果ならばSQLかMySQLに問題がありそうです。 SQLかMySQLで問題がなければプログラムに問題があるのではないでしょうか? あと、取得するデータがわかっているのであればレコードに対応するクラスを 作ることをおすすめします。 | ||||
|
投稿日時: 2004-07-20 16:29
データ取得時のSQLは "SELECT * FROM TEST WHERE ID = ?" です。
データの確認は頭掲コードの最後に System.out.println(list); を挿入して確認しました。 いろいろ試してみた結果、 頭掲のコードのうち、PreparedStatement を Statement に変更すると正常に 動作することが分かりました。 しかしバインド変数が使えないのは痛いです。 ここで思ったのですが、現在MySQLへの接続部分は java.sql.* の使用しているのですが、やはり com.mysql.jdbc.* を使用しなければならないのでしょうか? そうしますと、接続プール部分を以下のように定義しているのですが、 MySQL用に改変するにはどのようにすればよいのでしょうか? ただimportを変更するだけではDataSourceのConnectionを使用できないので、 代替となるようなサンプルがあればご教示をお願い致します。
このコードはMySQLを使用するにあたってのテスト用に作成しているものです。 今までは共通チームから提供されたOracleDBへの接続メソッドを使用するだけの立場だったのですが、 今回初めてMySQLを使用した開発に携わることになり、四苦八苦しながら勉強しております。 | ||||
|
投稿日時: 2004-07-20 16:44
標準APIで提供されている部分はインタフェースのみで、実際にはJDBCドライバの実装クラスに よって動いているので、そこを変えても何も変わりません。 #というか、コンパイルエラーになると思いますが なんとなくドライバのバグのような気がしますが、以下を確認してください。 ・JDBCドライバは何を使っているか ・データソースの設定はどうなっているか | ||||
1
