我当前的程序可以在数据库中写入数据记录(同时检查主键是否已存在)。在第二步,我想使用您能够更新/删除数据集的功能扩展我的程序。 UserID是主键。名字,Surname,Street aren&t。t。但我的目标是你也可以搜索名字或其他不是主要的字段,并获取所有数据集,例如:名字=搜索值。
我如何成像:
System.out.println("You have choosen edit/delete dataset!");
System.out.println("Enter UserID or other informations");
// Read in all available information from the user
//
UserInfo search = new UserInfo();
searchResult = search.getUserInfo(userid, firstname, secondname...);
屏幕上的输出应如下所示(搜索史密斯):
用户可以通过输入1,2来选择数据集......他想要更新或删除。
我不知道如何解决的问题:
编辑:使用JDBC连接数据库。
答案 0 :(得分:0)
使用Scanner获取用户输入,并使用此输入进行搜索:
System.out.println("You have choosen edit/delete dataset!");
System.out.println("Enter UserID or other informations");
Scanner scanner = new Scanner(System.in);
String searchKeyWord=scanner.next();
然后使用此关键字进行搜索,或者如果您想要使用多个关键字,则可以使用数组:
Scanner scanner = new Scanner(System.in);
String searchInput=scanner.next();
String[] keywords=searchInput.split(" ");
然后,您可以根据需要在搜索中管理这些关键字。
修改强>
您可以更改方法,以便将一系列关键字作为输入,无论此数组包含什么,您都将使用这些关键字进行搜索。
编辑2:
如果他跳过某个值,您可以将其设置为null
,而在搜索方法中,您只能使用非null
的值。
这就是你可以编写搜索方法来获取所有参数的方法,你必须测试一些字段可以为null的所有情况:
public void searchInfo(String[] keywords){
Connection conn = null;
Statement stmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
String sql = "SELECT * FROM my_Table ";
if(keywords[0]!= null || keywords[1]!= null || keywords[2]!= null){
sql+=" WHERE ";
if(keywords[0]!= null){
sql+=" id= ?";
stmt.setInt(1, Integer.parseInt(keywords[0]));
if(keywords[1]!= null){
sql+="AND firstname= ? ";
stmt.setString(1, keywords[1]);
if(keywords[2]!= null){
sql+="AND secondname= ? ";
stmt.setString(2, keywords[2]);
}
}else if(keywords[2]!= null){
sql+="AND secondname= ? ";
stmt.setString(1, keywords[2]);
}
}else if(keywords[1]!= null){
sql+=" firstname= ? ";
stmt.setString(1, keywords[1]);
if(keywords[2]!= null){
sql+="AND secondname= ? ";
stmt.setString(2, keywords[2]);
}
}else if(keywords[2]!= null){
sql+=" secondname= ? ";
stmt.setString(1, keywords[2]);
}
}
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
String first = rs.getString("firstname");
String second = rs.getString("secondname");
//Display values
System.out.print("ID: " + id);
System.out.print(", Firstname: " + first);
System.out.print(", Secondname: " + second);
}
rs.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null)
conn.close();
}catch(SQLException se){
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}//end try
}
编辑3:
//Let's say you got a list of User object List<User> ls
Iterator<User> it= ls.iterator();
int i=1;
while(it.hasnext()){
User u= (User) it.next();
System.out.println("("+i+") : ID= "+u.getId()+" Firstname= "+u.getFirstName()+" Secondname= "+ u.getSecondName);
i++;
}
System.out.println("Please enter the index of the wanted result:");
Scanner scan = new Scanner(System.in);
int index=scan.nextInt()-1; //index in list count from 0
if(index<=ls.size()){
System.out.println("the expected result is:");
System.out.println("ID= "+ls.get(index).getId()+" Firstname= "+ls.get(index).getFirstName()+" Secondname= "+ ls.get(index).getSecondName);
}