2015-08-14 65 views
0

當我調試時,出現此錯誤:在一個函數中可以有兩個數據庫連接嗎?

找不到列'place1'。

我能夠驗證它在sql中有列place1。

是不是因爲我在一個函數中不能有兩個數據庫連接?我不確定如何進一步調試問題。

Case.java

System.out.println("The highest value is "+highest+""); 
System.out.println("It is found at index "+highestIndex+""); // until now it works fine 
String sql ="Select Day from menu where ID =?"; 
DatabaseConnection db = new DatabaseConnection(); 
Connection conn =db.getConnection(); 
PreparedStatement ps = conn.prepareStatement(sql); 
ps.setInt(1, highestIndex); 
ResultSet rs = ps.executeQuery(); 
if (rs.next()) 
{ 
    int kb=rs.getInt("Day"); 
    System.out.println(kb); 
    if(kb==k) // k is a value getting from comboBox 
    { 
     String sql1 ="Select * from placeseen where ID =?"; 
     DatabaseConnection db1 = new DatabaseConnection(); 
     Connection conn1 =db1.getConnection(); 
     PreparedStatement ps1 = conn.prepareStatement(sql); 
     ps.setInt(1, highestIndex); 
     ResultSet rs1 = ps.executeQuery(); 
     if (rs1.next()) 
     { 
      String aaa=rs1.getString("place1"); 
      String bbb=rs1.getString("place2"); 
      Tourism to =new Tourism(); 
      to.setPlace1(aaa); 
      to.setPlace2(bbb); 
      DispDay dc=new DispDay(); 

     } 
     ps1.close(); 
     rs1.close(); 
     conn1.close(); 

    } 
    else 
    { 
     System.out.print("N"); 
     System.out.println("Sorry!!!"); 
    } 
} 
ps.close(); 
rs.close(); 
conn.close(); 

回答

2

跟蹤你的代碼,看看你得到的數據。該錯誤是在這條線:

String aaa=rs1.getString("place1"); 

來自哪兒呢?:

ResultSet rs1 = ps.executeQuery(); 

哪裏rs1ps來自?:

PreparedStatement ps = conn.prepareStatement(sql); 

來自哪兒呢?:

sql
String sql ="Select Day from menu where ID =?"; 

沒有列被選爲place1。此查詢僅選擇一個名爲Day的列。

也許你的意思是讓從第二預備語句?:

ResultSet rs1 = ps1.executeQuery(); 

結果有可能這樣的錯誤。也許幾個(或許多)更多。因爲...

提示:使用有意義變量名稱將會使你的代碼很多更容易執行。 ps,ps1,rs1等都很容易混淆。按照它們在概念上代表的事物命名變量,並且您的代碼開始像一個可以遵循的故事一樣閱讀。像daysQuerydaysResults和和placesResults這樣的變量名變得更加明顯,當您嘗試在代表「天」的變量中找到「位置」時,某些錯誤是顯而易見的。

1

在你的第二個查詢:

PreparedStatement ps1 = conn.prepareStatement(sql); 
你不小心使用變量 SQL,而不是

先前定義的SQL1。更換它,它會沒事的。

+0

我得到這個:沒有爲參數1指定的值 –

+0

@ user5156075:因爲你從來沒有在你的'ps1'準備語句中設置任何值。它有一個'?'參數,需要給出一個值。 – David

+0

得到它..謝謝:) –

相關問題