如何使用IO与JDBC连接
问题描述:
这是我写db查询的方法。如何使用IO与JDBC连接
public static void post() throws Exception{
int clientMPNumber = Parcel.typeClientNumber();
int orderPassword = Parcel.generatePass();
try{
Connection con = ConnectionDB.getConnection();
PreparedStatement posted = con.prepareStatement("UPDATE `BankDB`.`Info` SET `Money`='77777' WHERE `ClientID`='77' AND `ClientPass`='1111';");
posted.executeUpdate();
}catch(Exception e){System.out.println(e);}
finally{
System.out.println("Insert completed");
}
}
我想要做类似ATM机的事情。所以我希望用户输入他的ID和密码,然后用户可以提款或存款。 所以我想检查登录数据的正确性。用户需要输入正确的ID /密码[登录/密码放置在MySQL DB中]。
PreparedStatement posted = con.prepareStatement("UPDATE `BankDB`.`Info` SET `Money`='77777' WHERE `ClientID`='USER TYPES IT' AND `ClientPass`='USER TYPES IT';");
有一句话:“USER TYPES IT”,这是我的问题。我想在这里使用扫描仪或类似的东西。我该怎么做?
答
一种你原型(只是举个例子,你应该分手了部分获取用户ID,密码,这个功能之外更好的做法):
public void post(){
Scanner sc = new Scanner(System.in);
System.out.println ("please enter user id:");
String userId = sc.nextLine();
System.out.println("please enter password:");
String pass = sc.nextLine();
Connection con;
PreparedStatement posted;
try {
con = ConnectionDB.getConnection();
String sql = "UPDATE `BankDB`.`Info` SET `Money`='77777' WHERE `ClientID`=? AND `ClientPass`=?";
posted = con.prepareStatement(sql);
posted.setString(1, userId);
posted.setString(2, pass);
posted.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
posted.close();
con.close();
}
}
你检查[Java的扫描仪教程](HTTP ://javatutorialhq.com/java/util/scanner-class-tutorial/)已经?这是一个开始的好地方。另外,关于数据访问:在现实生活中,您希望将绑定变量用于用户输入,并且永远不应该以纯文本形式存储密码;你存储他们散列(用一些盐)。 –
你不应该在'finally'块中打印'Insert completed'。它可能不完整。你应该在'try'块中打印它。 – EJP