2017-04-09 7 views
0

JDBCを使用してデータベースに接続していますが、次のようなクエリを作成します。SELECT idCows FROM cows where Name = "someVariable"JDBCでdoPOSTを作成する方法

この場合、「someVariable」はHTMLのフォームから取得する文字列です。その変数を取得してクエリに設定するにはどうすればよいでしょうか?名前を検索するたびに私に正しい答えをもたらしてください。

import java.sql.*; 

public class Connector { 

public static void main(String[] args) { 

    try { 
     Class.forName("com.mysql.jdbc.mysql-connector-java-5.1.12-bin"); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    String url = "jdbc:mysql://localhost/Farm"; 

    try { 
     Connection con = DriverManager.getConnection(url, "admin", "admin123"); 

     Statement stat = con.createStatement(); 

     ResultSet rs = stat.executeQuery("SELECT idCows FROM cows WHERE Name = "+name); 

     while(rs.next()) { 

      String n = rs.getString("Name"); 

      System.out.println(n); 
     } 

     stat.close(); 
     con.close(); 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

}

+0

を検索してください "" と "バインド変数" –

+0

http://docs.oracle.com/javase/tutorial/jdbc /basics/prepared.html –

+0

コードの問題点 –

答えて

0

あなたはPreparedStatementを使用して、

ResultSet rs = stat.executeQuery("SELECT idCows FROM cows WHERE Name = '"+name+"'"); 

または、はるかに良いように単一引用符で変数を置く必要があります。

私のコードは次のようになります。

PreparedStatement stat = con.prepareStatement("SELECT idCows FROM cows WHERE Name = ?"); 
stat.setString(1, name); 
ResultSet rs = stat.executeQuery(); 

その後

String n = rs.getString("idCows"); 

代わりの"NameやるのprepareStatement「

+0

ありがとうございます。すぐにこのソリューションをチェックします。 –

関連する問題