![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
public class DBtest {
public static void main(String[] args){
try {
Connection con = null;
PreparedStatement ps = null;
String url = "jdbc:mysql://localhost/address";
String user = "test";
String password = "pass";
con = DriverManager.getConnection(url, user, password);
Statement st = (Statement) con.createStatement();
Statement st2 = (Statement) con.createStatement();
String sql = "SELECT * FROM data2";
ResultSet rs = st2.executeQuery(sql);
try {
System.out.println("ok");
// ここでクエリを実行
while(rs.next()){
System.out.println(rs.getString("name")+rs.getString("age"));
}
//氏名入力
System.out.println("氏名を入力してください。");
BufferedReader na =
new BufferedReader(new InputStreamReader(System.in));
String Na = na.readLine();
String ins = "INSERT INTO data2(name,age)VALUES('?',20)";
ps = (PreparedStatement) con.prepareStatement(ins);
ps.setString(1,Na);
ps.executeUpdate();
//INSERT実行
int rs2 = st2.executeUpdate(ins);
System.out.println(rs2);
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
finally {
// 直前の try ブロックに入ったら、ここは必ず実行される
con.close();
}
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
// 接続できない時
}
}
}
現在javaでmysqlに接続してDB内の検索や追加等を行うものを作成しています。
現状は入力されたものをDBに追加することまでできましたが 検索で
入力された値がDBの中に一致する、または部分一致したものを表示させるやり方がわかりません
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などを使うべきだろう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Ruby vscode 文字化け 1 2022/05/21 19:17
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Java java final 1 2022/06/10 22:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
equalsの逆
-
InputStream.read()でタイムア...
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
javaのfor文が機能してないみた...
-
ObjectInputStreamとStreamCorr...
-
Javaで、TomCatプロジェクトを...
-
BufferedReader.readline()で読...
-
Servletでテキストボックスに入...
-
[JAVA]エラーが解決できません。
-
Java int sum = 0は必要ですか?
-
javaでクッキーを取得したい
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
ループ処理の際、最後だけ","を...
-
ORA-01858: 数値を指定する箇所...
-
[JAVA]try 内の変数を外で!?
-
オブジェクトの中のプロパティ...
-
VBAで配列の計算
-
Path型をString型へ変換する(Java)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
InputStream.read()でタイムア...
-
Java int sum = 0は必要ですか?
-
テキストファイルから空白行をよむ
-
csv出力について
-
[JAVA]エラーが解決できません。
-
Servletでテキストボックスに入...
-
Javaでデータに登録する度にID...
-
Javaの質問です。テキストファ...
-
ソケットを使ったサーバとクラ...
-
javaのfor文が機能してないみた...
-
java連結
-
テキストファイルにおいて任意...
-
九九を横に表示する。
-
Class.forNameでエラーになる
-
ObjectInputStreamとStreamCorr...
-
Javaの質問です。テキストファ...
-
BufferedReaderでのエラー
-
javaでCSVの中身から最大値を表...
おすすめ情報