2017-03-17 12 views
-1

エラー:javax.servlet.ServletException:ます。java.sql.SQLException:列 'NUM' が見つかりません

this is the error code

コード:

<% 
String driver = "com.mysql.jdbc.Driver";  
Class.forName(driver).newInstance(); 
    Connection con=null; 
    ResultSet rst=null; 
     ResultSet rst1=null; 
     ResultSet rst2=null; 
     ResultSet rst3=null;   
    Statement stmt=null; 
     Statement stmt1=null; 
     Statement stmt2=null; 
     Statement stmt3=null; 

    try{ 
     String url="jdbc:mysql://localhost/company?user=root&password=root"; 
     con=DriverManager.getConnection(url); 
     stmt=con.createStatement(); 
       System.out.println("success"); 
    } 
    catch(Exception e){ 
    System.out.println(e.getMessage()); 
     System.out.println("failed"); 
    } 
%> 


<% 

     rst = stmt.executeQuery("select max(num) from invoicename;"); 
    if (rst.next()) { 
     String str = rst.getString("num"); 

     rst1 = stmt.executeQuery("Select sum(price) from invoices where invoiceno='" + str + "';"); 
     if (rst1.next()) { 
      int s = rst1.getInt(1); 
      if (rst1.wasNull()) { 
       s = 0; 
      } 
      stmt.executeUpdate("insert into invoice values('" + str + "',curdate(),curtime(),'" + s + "');"); 
     } 
    } 
    stmt.executeUpdate("insert into invoicename values();"); 



%> 

エラー:

javax.servlet.ServletException: java.sql.SQLException: Column 'num' not found

私は上記のコードで問題を見つけることができません。エラーが画像に添付されています。

+0

この質問の最初のバージョンは非常にスパムであり、閉鎖ではない場合には、それを下降音にすることができます。あなたの質問を慎重かつ努力して書き、txtspkを避けて懇願してください。実際の単語を書くのが面倒すぎる場合は、スタックオーバーフローがあなたのためではないかもしれないことに注意してください。 – halfer

答えて

1

String str = rst.getString("num");という行がありますが、実行したクエリでnumという名前の列は返されません(max(num)を照会しています)。

String str = rst.getString(1); 

またはあなたの名前で結果を返した後、あなたは結果を取得したいとき、その名前を参照するために目のクエリを変更します:

どちらかあなただけの最初の(そして唯一の)列から結果を取得しよう
rst = stmt.executeQuery("select max(num) as maxnum from invoicename;"); 
if (rst.next()) { 
    String str = rst.getString("maxnum"); 
関連する問題