我在Eclipse中有一个与我的Java项目相关联的SQLite数据库。当我提供硬编码的指定ID(例如' 3')时,我能够从数据库中删除条目。我试图改变代码,以便让用户手动传递任何数字并让它删除该条目。
public static String deleteRecords(String NumberDelete){
Connection dbConnection = null;
Statement statement = null;
try{
dbConnection = getDBConnection();
dbConnection.setAutoCommit(false);
statement = dbConnection.createStatement();
String sql = "DELETE from employees where ID='NumberDelete';";
statement.executeUpdate(sql);
dbConnection.commit();
statement.close();
dbConnection.close();
} catch(Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
return NumberDelete;
}
答案 0 :(得分:0)
您需要使用PreparedStatement
传递参数来查询和执行它,方法将如下所示:
public static String deleteRecords(String NumberDelete) {
Connection dbConnection = null;
PreparedStatement statement = null;
String sql = "DELETE from employees where ID= ? ;";
try {
dbConnection = getDBConnection();
dbConnection.setAutoCommit(false);
statement = dbConnection.prepareStatement(sql);
statement.setString(1, NumberDelete);
statement.executeUpdate(sql);
dbConnection.commit();
statement.close();
dbConnection.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
return NumberDelete;
}
这将在查询中设置数字并执行它。如果数字类型为int
,则您需要使用setInt
来设置值。 Here是PreparedStatement
的javadoc。
答案 1 :(得分:-1)
对于用户输入,您可能需要查看扫描程序类:https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
一旦从用户那里得到一个整数,解析它并将其存储在一个变量中,你就可以简单地使用String连接:
String sql = "DELETE from employees where ID='" + userInput + "';";