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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
public class AddressDB {
private static enum Procnumlist {
NAME("名前"),
FNAME("フルネーム"),
END("終了");
private String name;
private Procnumlist(String name) {
}
}
//上の列挙型を基にした処理判定用マップを作成
private static final Map<Integer, Procnumlist> procmap;
static {
procmap = new HashMap<Integer, Procnumlist>();
procmap.put(1,Procnumlist.NAME);
procmap.put(2,Procnumlist.FNAME);
procmap.put(6,Procnumlist.END);
}
//結果
//ResultSetは受け取らない
private static void ans(List<Addr> ans) {
try {
System.out.println("検索結果");
for (int i = 0; i < ans.size(); i++) {
Addr addr = ans.get(i);
System.out.println(addr.getName() + ":" );
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
//閉じる。
close();
}
}
//名前検索(フルネーム)
private static List<Addr> srchFName(String keyword,Connection con) throws IOException {
String sql = "SELECT * FROM data2 where name=?";
PreparedStatement ps = null;
try{
ps = (PreparedStatement) con.prepareStatement(sql);
ps.setString(1,keyword);
ResultSet rs = ps.executeQuery();
//List<Addr> result = new ArrayList(Addr);
while(rs.next()){
rs.getString("name");
}
}catch (SQLException ex) {
}
return null;
}
//名前検索
private static List<Addr> srchName(String keyword,Connection con) throws IOException {
String sql = "SELECT * FROM data2 where name like ?";
PreparedStatement ps = null;
try{
ps = (PreparedStatement) con.prepareStatement(sql);
ps.setString(1,"%"+keyword+"%");
ResultSet rs = ps.executeQuery();
while(rs.next()){
Addr addr = rs.getString("name");
}
}catch (SQLException ex) {
}
return result;
}
private static boolean checkProcNum(int value) {
return procmap.get(value) != null;
}
public static void main(String[] args)throws IOException{
while(true) {
createConeection();
//処理条件入力
System.out.println("検索\n1.名前(ファーストネーム)で検索\n2.フルネームで検索\n6.終了");
//検索値入力
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int procnum = Integer.valueOf(br.readLine());
//入力チェック
if (!checkProcNum(procnum)) {
System.out.println("正しい値を入れてください。");
continue;
}
Procnumlist proc = procmap.get(procnum);
if (proc == Procnumlist.END) {
break;
}
if(proc == Procnumlist.NAME){
System.out.println("名前を入力してください。");
BufferedReader name =
new BufferedReader(new InputStreamReader(System.in));
String keyword = name.readLine();
List<Addr> result = srchName(keyword,null);
ans(result);
}
if(proc == Procnumlist.FNAME){
System.out.println("フルネームを入力してください。");
BufferedReader name =
new BufferedReader(new InputStreamReader(System.in));
String keyword = name.readLine();
List<Addr> result = srchFName(keyword,null);
ans(result);
}
}
}
//コネクション
private static Connection createConeection() {
String url = "jdbc:mysql://localhost/address";
String user = "test";
String password = "pass";
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
現在JDBCでDB接続し入力された値をDBから検索し出力するものを作成しておりますが詰んでしまいました。
入力した値をsrchで検索し結果をansで出力しようとしています。どのようにしたらよいのでしょうか
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
どこがどう詰んだのでしょうか?
何かエラーになるとか、思ったとおりの出力にならないとか情報が足り無すぎます。
ぱっと見ておかしいと思ったのはsrchNameもしくはsrchFNameの引数に文字列とコネクションがありますが、
呼び出し側でnullを渡しています。
これでcon.prepareStatement(sql);を実行したらNullpointerExceptionが発生します。
catch ( Exception e ) {
e.printStacktrace();
}
とすることで詳細なエラーを見ることが出来ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
九九を横に表示する。
-
BufferedReaderでのエラー
-
Class.forNameでエラーになる
-
Javaの質問です。テキストファ...
-
javaのファイル読み込み時の文...
-
テキストファイルから空白行をよむ
-
CSVファイルを , で句切って...
-
テキストファイルにおいて任意...
-
yyyymmddからyyyy/mm/d...
-
javaのfor文が機能してないみた...
-
javaからffmpegの利用
-
HashMap.putについて
-
javaでCSVの中身から最大値を表...
-
equalsの逆
-
Servletでテキストボックスに入...
-
JSPやサーブレットでSystem.out...
-
javaで質問です。 文字列2023/2...
-
System.err. printlnとSystem.o...
-
論理演算子”||”またはの入力方法
-
IF関数でEmpty値を設定する方法。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
equalsの逆
-
Javaの質問です。テキストファ...
-
InputStream.read()でタイムア...
-
Inputstreamについて
-
javaのfor文が機能してないみた...
-
テキストファイルにおいて任意...
-
Windowsでの標準入力の終了の仕方
-
Javaでデータに登録する度にID...
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
以下のJAVAプログラムでご質問...
-
FileクラスのcanRead/canWrite...
-
拡張子の読み込み制限を設けた...
-
九九を横に表示する。
-
Class.forNameでエラーになる
-
ObjectInputStreamとStreamCorr...
-
戻り値を使用する呼出
-
JAVAでエラーがでる。
おすすめ情報