2012-08-22 13 views
7

これまでのところ、私はexecuteUpdate文の中に値を宣言したときにのみSQLテーブルにデータを挿入できました。私はそうのような実行方法のパラメータとして宣言する変数としてこれらの値を渡すことができる方法があるかどうかを知りたいと思った何を:Javaを使用してSQL Serverに変数値を挿入

public void updateSQL(String name, String dnsName, String ipV4, String ipV6, int statusCode) 
{ 
    try 
    { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     Connection connection = DriverManager.getConnection("jdbc:sqlserver://servername;database=databasename;integratedSecurity=true"); 

     System.out.println("Database Name: " + connection.getMetaData().getDatabaseProductName()); 

     Statement statement = connection.createStatement(); 

     statement.executeUpdate("INSERT INTO ComputerStatus(Name, DNSName, IPAddressV4, IPAddressV6, StatusCodeID)" + "VALUES(@Name, @DNSName, @IPAddressV4, @IPAddressV6, @StatusCodeID)"); 
     System.out.println("Data Inserted"); 

     ResultSet resultSet = statement.executeQuery("SELECT Name FROM ComputerStatus"); 

     while(resultSet.next()) 
     { 
      System.out.println("Computer Name: " + resultSet.getString("Name")); 
     } 

     connection.close(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     System.err.println("Problem Connecting!"); 
    } 
} 

私は別の物事のカップルが、その運を試してみました遠い誰でもこれができるかどうか知っていますか?

答えて

12

Statementの代わりにPreparedStatementを使用できます。

PreparedStatement stmt = connection.prepareStatement("insert into test (firstname, lastname) values (?, ?"); 
stmt.setString(1, name); 
stmt.setString(2, lname); 
stmt.executeUpdate(); 

この方法では、SQLインジェクションを防止します。

+1

「stmt.executeUpdate()」[こちら](http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#executeUpdate%28%29) –

+0

編集、ありがとう。 – fonini

3

はこちらをご覧:

PreparedStatement prep = conn.prepareStatement("INSERT INTO ComputerStatus(Name, DNSName, IPAddressV4, IPAddressV6, StatusCodeID) VALUES(?, ?, ?, ?, ?)"); 
prep.setString(1, name); 
prep.setString(2, dnsName); 
prep.setString(3, ipV4name); 
prep.setString(4, ipV6); 
prep.setInt(5, statusCode); 
prep.executeUpdate(); 

thisはあなたが理解するのに役立ちます。

関連する問題