2017-10-10 45 views
0

這裏是代碼,我使用2 jdatechooser,並將代碼放在一個按鈕中。我也不確定查詢是否正確。在日期之間進行搜索如何在jtable中顯示

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    try 
{ 

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String url="jdbc:sqlserver://USER-PC:1433;databaseName=tblgg"; 
     String userr="sa"; 
     String passs="1234"; 
     Connection con=DriverManager.getConnection(url,userr,passs); 

    java.util.Date first = dt1.getDate(); 
    java.util.Date second = dt2.getDate(); 
    String sql="SELECT * FROM tbl_sale WHERE date between '"+ first+"'and 
    '"+second+"'"; 

PreparedStatement pst= con.prepareStatement(sql); 



    ResultSet rs = pst.executeQuery(); 
tblsale.setModel(DbUtils.resultSetToTableModel(rs)); 

} 
catch (Exception e) 
{ 
    JOptionPane.showMessageDialog(null, e); 
} 
}     

好吧,我編輯我的代碼。 xD現在正在發生某些事情,但沒有任何顯示。

+0

永遠不要將任何SQL放入GUI(請參閱關於MVC)。不要連接你的查詢和值,然後使用'PreparedStatement' ...如果你想提出一個SQL注入,至少使用'Statement'來完成。那麼,你有沒有試圖填充一個'JTable',或者看看怎麼做? – AxelH

回答

-2

糾正您缺少準備好的語句用法。試試這個

Resuse您的連接

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    String url="jdbc:sqlserver://USER-PC:1433;databaseName=tblgg"; 
    String userr="sa"; 
    String passs="1234"; 
    Connection con=DriverManager.getConnection(url,userr,passs); 
    ResultSet result = null; 

    String sql2 = "select\n" + 
      "*\n" + 
      "from student\n" + 
      "where date(first) > ? and date(second) < ?"; 
    PreparedStatement ps1 = con.prepareStatement(sql2, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY) ; 
    ps1.setObject (1 , startDatePicker.getModel().getValue()); 
    ps1.setObject (2 , endDatePicker.getModel().getValue()); 


    result = ps1.executeQuery(); 
    // get number of rows 
    result.last(); 
    numRows = result.getRow(); 
    result.first(); 
    //Get metadata object for result 
    ResultSetMetaData meta = result.getMetaData(); 
    // create an arry of string for the colum names 
    colNames = new String[meta.getColumnCount()]; 
    // store column names in the new col names array 
    for(int i = 0; i< meta.getColumnCount(); i++) 
    { 
     //get column name 
     colNames[i] = meta.getColumnLabel(i+1); 

    } 
    // create 2 d string array for table data 
    tableData = new String [numRows][meta.getColumnCount()]; 
    // store columns in the data 
    for (int row = 0 ; row < numRows; row++) 
    { 

     for (int col = 0; col < meta.getColumnCount(); col++) 
     { 
      tableData[row][col]= result.getString(col + 1); 

     } 

     result.next(); 
    } 


    // close statement 
    ps1.close(); 
    connection.close(); 
    System.out.println("Data Table Loaded."); 





} 

要顯示的創建結果數據集使用這些線路

JTable table = new JTable(tableData,colNames); 
JScrollPane scrollPane = new JScrollPane(table); 

不要忘了滾動窗格添加到您的JPanel

panel.add(scrollPane); 
+0

使用元數據對於使用'PreparedStatement'失敗的人來說很複雜......並且對於特定查詢而言是不必要的。只需使用模擬表格爲您的解決方案提供'Select A,B from myTable' ...這將更清潔,更短,.. – AxelH

+0

模擬表不顯示在Java API搜索上。請解釋課堂模擬表 –

相關問題