2012-02-02 1 views
1

でビューを保存します使用して、私はそれがあることのためのストアドプロシージャを使用するJavaコードを持つストアドプロシージャ

public class frmRented extends javax.swing.JFrame { 

    /** Creates new form frmRented */ 
    public frmRented() { 
     initComponents(); 
     MyTools.SetCenterLocation(this); 
     DataAccess da = new DataAccess(); 
     try { 
      da.Connect(); 

      //da.rs = da.st.executeQuery("select * from SearchRent"); 
      //da.rs = da.st.executeQuery("{call Search_Rent()}"); 
      CallableStatement cal = da.con.prepareCall("{call Search_Rent()}",ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
      da.rs = cal.executeQuery(); 

      da.rs.last(); 
      int rc = da.rs.getRow(); 
      da.rs.beforeFirst(); 
      int cc = 9; 

      String[] header = {"id", "idc", "name", "preamble", "k ", "s", "d", "a","e"}; 
      String[][] data = new String[rc][cc]; 
      int i = 0; 

      while (da.rs.next()) { 
       data[i][0] = da.rs.getString("Tbl_Software.ID"); 
       data[i][1] = da.rs.getString("Tbl_Software.ID_Category"); 
       data[i][2] = da.rs.getString("Tbl_Software.Name"); 
       data[i][3] = da.rs.getString("Tbl_Software.UserID_Rent"); 
       data[i][4] = da.rs.getString("Tbl_User.Name"); 
       data[i][5] = da.rs.getString("Tbl_User.Family"); 
       data[i][6] = da.rs.getString("Tbl_User.Tel"); 
       data[i][7] = da.rs.getString("Tbl_Software.DataStart"); 
       data[i][8] = da.rs.getString("Tbl_Software.DataFinish"); 
       i++; 

      } 
      jTable1 = new JTable(data, header); 
      jScrollPane1.setViewportView(jTable1); 
      cal.close(); 
      da.Disconnect(); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 

    } 

が、私はこのコードを実行するとき、私はこのエラーを持っている:ある

com.microsoft.sqlserver.jdbc.SQLServerException: The column name Tbl_Sofware.ID is not valid.

このエラーを解決するにはどうすればよいですか?

+0

スタックトレースを渡すことができますか、エラーを投げている行を教えてください。私はそれがbeforeFirstへの呼び出しだと思いますが、より多くの情報が良いでしょう。 –

+0

Java命名規則を学んでください。 – kleopatra

+0

'ResultSet.CONCUR_READ_ONLY'を' ResultSet.CONCUR_UPDATABLE'に変更してください。 –

答えて

0

ビューが正しく宣言されていません。唯一の方法でビューからSELECTステートメントを実行し、成功すると、結果のステートメントをビューでラップします。

data[i][0] = da.rs.getString("SotwareID"); 
data[i][1] = da.rs.getString("ID_Category"); 
data[i][2] = da.rs.getString("SoftwareName"); 
data[i][3] = da.rs.getString("UserID_Rent"); 
data[i][4] = da.rs.getString("UserName"); 
data[i][5] = da.rs.getString("Family"); 
data[i][6] = da.rs.getString("Tel"); 
data[i][7] = da.rs.getString("DataStart"); 
data[i][8] = da.rs.getString("DataFinish"); 
:読者スルー値を読みながら

OR

あなたは表の別名を指定する必要はありません、あなたはあなたのビューから、実際の列名を参照する必要が適切な方法にこれであなたのコードを交換し、

+0

このコードにも同じ例外があります:com.microsoft.sqlserver.jdbc.SQLServerException:列名IDが無効です。 – hamed

+0

申し訳ありませんが、表示されている列の実際の名前は記載されていません。更新された答え。 –

+0

ooohhhh、com.microsoft.sqlserver.jdbc.SQLServerException:列名SoftwareIDが無効です。 – hamed

0

私はこのライン

da.st = da.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 

は、あなたがこのStatementを作成し、それを割り当て、何もしていないされているので、あなたがこれを必要だと思う

CallableStatement cal = da.con.prepareCall("{call Search_Rent()}",ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 

​​3210

を交換してくださいda.stですが、使用しないでください。 CallableStatement

関連する問題

 関連する問題