2016-08-08 8 views
-2

は、私はこのようなテーブルがあります。Oracleエラー無効な番号

ARITHMOS KOD DATE   A B C 
1  ΑΓΟ 01/08/2016 5 2 3 
2  ΠΛΗ 02/08/2016 3 2 1 

をとNetBeansプログラムから私は名前のテーブル日付とKODを挿入し、基準を満たす行のみを取得したいです。

コード:

String pote=ac3.getText();//name table 

String c=((JTextField)jdt1.getDateEditor().getUiComponent()).getText();//date  
String d=((JTextField)jdt2.getDateEditor().getUiComponent()).getText();//date 
String s0=(String)jcb1.getSelectedItem();//KOD 

String sql="SELECT * FROM "+pote+" WHERE (Hmerominia BETWEEN "+c+" AND "+d+") AND KOD='"+s0+"' ORDER BY ARITHMOS"; 

無効な番号を示す(再== JOptionPane.YES_OPTION){ 試し{

stm=(OracleStatement) conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_UPDATABLE); 


    rs = (OracleResultSet) stm.executeQuery(sql); 
    UpdateJTable(); 
    /* while(rs.next()){ 
     v0.setText(rs.getString("ARITHMOS")); 

    }*/ 

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

    }else if (re == JOptionPane.NO_OPTION) { 
     this.setVisible(true); 
    } 

場合にエラー。固定

+1

がに設定されたすべての変数は何ですか - 'sql'として終わるんでしょうか?そしてあなたのテーブルは実際に呼ばれていますか?バインド変数を使用する必要がありますが、それは副次的な問題です。 –

+0

'ΑΓΟ'の前後に一重引用符がありません。連結されたSQLは 'AND KOD =ΑΓΟORDER BY ... 'のように見えますが、これは明らかに無効です。これは'ΓΓΟ'という列を探すためです。しかし、すでに提案されているように、文字列内の値を直接連結するのではなく、パラメータをバインドする必要があります。 – sstan

+0

私は一重引用符を入れましたが、今は無効な番号です。 – asd32

答えて

0

public static ResultSet Consult(String consult){ 
     Connection conn = ConnectDB();//connection to database 
     Statement declare; 
     try{ 
      declare=conn.createStatement(); 
      ResultSet rs=declare.executeQuery(consult); 
      return rs; 
     }catch(Exception e){ 
      JOptionPane.showMessageDialog(null, e); 

     } 
     return null; 

    } 


} 

Code in Button: 
    String pote=ac3.getText();//chosen table name 
    String c=((JTextField)jdt1.getDateEditor().getUiComponent()).getText();//date as varchar2 set to database table 
    String d=((JTextField)jdt2.getDateEditor().getUiComponent()).getText();//date as varchar2 set to database table 
    String s0=(String)jcb1.getSelectedItem();//chosen item 


    String sql="SELECT * FROM "+pote+" WHERE Hmerominia BETWEEN '"+c+"' AND '"+d+"' AND KOD='"+s0+"'"; 

    int re = JOptionPane.showConfirmDialog(this, "SEARCH?", "Confirm", 
     JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); 


    if (re == JOptionPane.YES_OPTION) { 



    DefaultTableModel md=(DefaultTableModel)pel300.getModel(); 
md.setRowCount(0); 
rs=(OracleResultSet) Connect.Consult(sql);//Connect class 

try{ 
    while(rs.next()){ 
    Vector v=new Vector(); 
    v.add(rs.getString(1)); 
    v.add(rs.getString(2)); 
    v.add(rs.getString(3)); 
    v.add(rs.getString(4)); 
    v.add(rs.getString(5)); 
    v.add(rs.getString(6)); 
    v.add(rs.getString(7)); 
    v.add(rs.getString(8)); 


    md.addRow(v); 
    pel300.setModel(md); 


    pel300.setShowGrid(true); 


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

    }else if (re == JOptionPane.NO_OPTION) { 
     this.setVisible(true); 
    } 
関連する問題