2013-10-03 110 views
0

我有從2個數據庫調用查詢的代碼,但它必須同時編譯。這裏是我的代碼查詢無法正確執行

public void SummTEkspor(){ 
     TEkspor ti = new TEkspor(); 
     TEksporDAOImpl impd = new TEksporDAOImpl (DBConnection.getInstance().getCon()); 
     String sql1 ="DELETE FROM a.dbo.t_export\n" + 
        "INSERT INTO a.dbo.t_export\n" + 
        "SELECT * FROM b.dbo.export x WHERE x.sk_batch IN \n" + 
        "(SELECT sk_batch from batch_hdr WHERE 

          mth="+cmbBln.getSelectedItem()+ 
         "AND year="+cmbThn.getSelectedItem(); 


     try { 
      Statement st = kon.conn.createStatement(); 
      Statement st2 = kon.secCon.createStatement(); 
      ResultSet rs = st.executeQuery(sql1); 
      while (rs.next()) { 
       System.out.println("success"); 
      } 
     } catch (Exception x) { 
      System.out.println("error"); 
     } 
    } 

但是,當我運行它時,輸出是好的,但而有一些數據將在該表中查詢不正確執行其中有我的表裏面沒有數據。

有沒有解決方案來解決這個問題?謝謝任何回覆

+0

什麼是從插入到查詢刪除?特別是如果它是相同的表 – Cruncher

+0

我需要刷新從該表中的數據,因爲從組合框中選擇時間。這就是爲什麼我沒有選擇'executeUpdate'而不是'executeQuery'的原因。還有其他解決方案嗎?謝謝 – syaloom

回答

0

嘗試使用executeUpdate而不是executeQuery來執行數據更新。分開選擇查詢並使用executeQuery執行並獲取結果集。

+0

如果使用executeUpdate,OP調用結果集 – SpringLearner

+0

@javaBeginner如何更新答案。感謝您選擇它,我只是寫了幫助插入數據的答案。 –

+0

我試圖就像你的建議,但我真的很困惑,因爲它沒有運行查詢(在嘗試)。我說過,因爲它只顯示'錯誤'。我錯過了那裏的東西嗎? – syaloom

0

使用executeUpdate而不是executeQuery並嘗試將您的查詢劃分爲多個查詢。

0

更好的選擇是不要在一行中使用所有語句,因爲檢索您應該調用executequery並刪除或插入您調用executeUpdate方法。 也避免使用statement和使用PreparedStatement

+0

我試圖就像你的建議,但我真的很困惑,因爲它沒有運行查詢(在嘗試)。我說過,因爲它只顯示'錯誤'。我錯過了那裏的東西嗎? – syaloom

+0

@syaloom錯誤,其中行 – SpringLearner

+0

該錯誤是從Catch異常,我把'System.out.println(「錯誤」);'。我再次修改,在那裏我把一個'JOptionPane.showMessageDialog(cmbThn,x);'但錯誤'com.microsoft.sqlserver.jdbc.sqlservereception:語句沒有返回結果集'。如果有可能我知道,這件事發生了什麼問題? – syaloom