2016-11-27 17 views
-1

Eclipse内のJavaプロジェクトまでSQLiteデータベースをリンクしています。私は '3'のようなハードコードされた、指定されたIDを与えると、データベースからエントリを削除することができます。私は、ユーザーが手動で任意の番号を渡し、そのエントリを削除させるために、コードを変更しようとしています。SQLiteデータベースから削除

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; 
} 

答えて

-1

、あなたはScannerクラスをチェックアウトする場合がありますが:https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

あなたは、ユーザーから整数を取得し、それを解析し、変数に格納したら、あなたは、単に文字列の連結を使用することができます。

String sql = "DELETE from employees where ID='" + userInput + "';"; 
+0

ありがとうございます!簡単な解決策だと分かっていました。 –

+0

SQLクエリを文字列に連結しません。それはSQLインジェクションのリスクを開放します。クエリパラメータを使用します。 –

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を使用して値を設定する必要があります。 HerePreparedStatementのjavadocです。ユーザーの入力を

関連する問題