• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JDBCについて)

JavaでMySQLに接続し、データベースの検索や追加を行う方法

このQ&Aのポイント
  • 自作のJavaプログラムでMySQLに接続し、データベースの検索や追加を行う方法について解説します。
  • 現在、JavaでMySQLに接続し、データベース内の検索や追加などを行うプログラムを作成しています。現状は入力された値をデータベースに追加することはできましたが、データベース内で入力された値と一致するか部分一致する値を表示させる方法がわかりません。
  • Javaを使用してMySQLに接続し、データベース内の検索や追加を行うプログラムを作成しています。現在のところ、入力された値をデータベースに追加することはできましたが、データベース内で入力された値と部分一致する値を表示させる方法について詳細な手順がわかりません。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> 検索で入力された値がDBの中に一致する、 > または部分一致したものを表示させるやり方がわかりません ps.executeUpdate()でINSERTが出来ているし st2.executeQuery()でSELECTが出来ているのだから、 後はそれの複合技だ。 String sql = "SELECT * FROM data2"; ResultSet rs = st2.executeQuery(sql); のところが今条件(where句)なしで全件取ってくるようになっているので、こいつを String sql = "SELECT * FROM data2 where name='?'"; // この辺好きに変えてね ps2 = (PreparedStatement) con.prepareStatement(sql); ps2.setString(1,<何らかの入力値>); ResultSet rs2 = ps2.executeQuery(); などとする事で、実行時に条件を変えてSELECTする事ができるようになる。 ここまで出来たら後はSQL文中のイコールをlikeに変えて部分一致させるのも簡単な応用になる。 StatementとPreparedStatementの使い分けは大丈夫かな? その辺はしっかり押さえておこう。 ~~~~ 後、直接は関係ないけど、JDBCは特定のJDBCドライバーに依存しない データベース接続を目的として設計されている。 実際はSQL文自体に方言があるので完璧とは言えないけどね。 なので、importするStatementとPreparedStatementは特に理由がない限り java.sql.Statementインターフェースとjava.sql.PreparedStatementインターフェースを 使う方がいいだろう。 そうすると(前述のSQLの方言はともかく)、 String url = "jdbc:mysql://localhost/address"; String user = "test"; String password = "pass"; con = DriverManager.getConnection(url, user, password); のところで、urlをPostgreSQL用のものにしたらそのままPostgreSQLで動くようになる。 MySQL JDBCドライバーを直接インポートしてると実行時に型が合わなくてClassCastExceptionだ。 まぁ、実務でDB操作する時は生JDBCなんて普通使わなくてS2JDBCとかHibernateとか 使う事になるのでこの辺はさらっと「ふぅんそんなもんなんだ」と思っておいてくれてもいいだろう。 実行時に与えられる条件が変わる(SQL文のwhere句も動的に作らなきゃいけない)なんてところまで来ると素直にS2DAOなどを使うべきだろう。