2017-04-13 122 views
0

我有一個由其他程序創建的sqlite數據庫文件,並檢查一切都很好。Java sqlite行後消失選擇查詢

然後,在選擇查詢來獲取一些數據後,該行的一些消失。我試圖使用prepareStatement,雖然它的工作,但這仍然存在。

我的代碼

private ForecastTableItem selectItemPrepareStatement(String tableName, String columnName, String name) { 
    ForecastTableItem item = null; 
    Connection conn = null; 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 

    try { 
     Class.forName("org.sqlite.JDBC"); 
     conn = DriverManager.getConnection("jdbc:sqlite:" + dbLocation); 
     System.out.println("Selecting item from tableName: "+tableName + " of col: "+columnName + " : "+name); 

     String query = "SELECT * FROM " + tableName + " WHERE " + columnName + "=? COLLATE NOCASE"; 
     pstmt = conn.prepareStatement(query); 

     pstmt.setString(1, name); 
     rs = pstmt.executeQuery(); 

     if (rs.next()) { 
      if (tableName.equalsIgnoreCase("mainTable")) { 
       item = new ForecastTableItem(); 
       item.setId(rs.getInt("Id")); 
       item.setTitle(rs.getString("title")); 
       item.setLink(rs.getString("link").toLowerCase()); 
       item.setPositionType(rs.getString("positionType")); 
       item.setPackageName(rs.getString("packageName")); 
       item.setCsvFilePath(rs.getString("csvFilePath")); 
       item.setSubpackageName(rs.getString("subpackageName")); 
       item.setTimeFrame(rs.getString("timeFrame")); 
       item.setForecastDate(rs.getString("forecastDate")); 
       item.setTargetDate(rs.getString("targetDate")); 
      } 

     } 


    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally{ 
     if(pstmt != null) try{ pstmt.close();} catch(SQLException e){};     
     if(rs != null) try{ rs.close();} catch(SQLException e){}; 
     if(conn != null) try{ conn.close();} catch(SQLException e){}; 
    } 


    return item; 
} 
+0

我可以看到問題,但在選擇查詢的情況下,它應該是 executeNonQuery而不是executeQuery –

+0

您沒有正確使用準備好的語句100%。 – Sedrick

回答

-1

後COLLATE NOCASE使用半柱 「SELECT * FROM」 + +表名 「WHERE」 + COLUMNNAME + 「= COLLATE NOCASE;?」;