2017-04-09 18 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

請搜索 」prepareStatement「 和 」綁定變量「 –

+0

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

+0

你的代碼有什麼問題? –

回答

0

你必須把變量單引號像

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

或者,更好,使用PreparedStatement。

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

然後做

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

,而不是"Name

+0

謝謝,我要馬上檢查這個解決方案。 –