• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaです。)

Javaでデータベースの最大値を求める方法

annyg2の回答

  • annyg2
  • ベストアンサー率50% (8/16)
回答No.3

Column not found: XXX が出るのであれば、素直にカラムがない、という意味意外ありませんから、本当にそのテーブルにそのカラムがあるのかどうか確認するのがまず最初だと思います。

関連するQ&A

  • ラジオボタンを使って更新 eclipse Tomcat mysql

    ラジオボタンを使って更新するときにデータがnullになってしまう。 更新するときデータが表示状態でデータを買えて更新したい kousin1.java import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class kousin1 extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ doPost(request,response); } public void doPost PrintWriter out = response.getWriter(); String url = "jdbc:mysql://localhost:3306/aiue"; String user = "root"; //ユーザ名 String pass =""; //パスワード String id1 =""; String name1=""; String address1=""; Connection con = null; //データベースへの接続を行なう Statement smt = null; //SQL実行の仲介者 int syutoku = 0; ResultSet rs = null; String id = request.getParameter("id"); String name = request.getParameter("name"); String address = request.getParameter("address"); String radio = request.getParameter("radio"); try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(url,user,pass); smt = con.createStatement(); System.out.println("更新"); String sql1 = "UPDATE System.out.println(sql1); smt.executeUpdate(sql1); smt.close(); }catch(SQLException e){ throw new ServletException(e); }catch(Exception e){ e.printStackTrace(); }finally{ if(smt != null){ try{smt.close();}catch(SQLException ignore){} } if(con != null){ try{con.close();}catch(SQLException ignore){} } kousin1.jspへ kousin.jsp <html> <head> </head> <form method="POST" action="kousin1"> <body> <div>コード:<input type="text" name="id" value="<%=request.getAttribute("id")%>" size=40></div> <div>名称:<input type="text" name="name" value="<%=request.getAttribute("name")%>" size=42></div> <div>住所:<input type="text" name="address" value="<%=request.getAttribute("address")%>" size=42></div> <div><input type="hidden" name="syutoku" value="<%=request.getAttribute("syutoku")%>" size=40></div> <input type="submit" value="更新"> </form> </body> </html>

  • requestについて困っています。

    下記のbooleanの結果を他のサーブレットで取得して、結果ごとに"mapping.findForward("")"の処理をしたいのですが、取得の仕方が分かりません。お願い致します。 <MemberDAO.java> ・・・ public boolean isEntriedMail(String member_mail) throws SQLException{ Connection con = ds.getConnection(); PreparedStatement stmt = con.prepareStatement(ISENTRIEDSQL); ResultSet rs = null; try{ stmt.setString(1,member_mail); rs = stmt.executeQuery(); if(rs.next()){ int count = rs.getInt(1); if(count == 0){ return false; } } }catch(SQLException ex){ return true; }finally{ if(rs != null){ rs.close(); } stmt.close(); con.close(); } return true; }

  • JAVAからMYSQL使用時のキャッシュ無効化方法

    以下のようにJAVAからMYSQLを使っています。 しかし、30秒おきに使用しているSQL文の結果がDBを更新してもかわりません。 おそらく、javaまたはMYSQLでキャッシュが残っているためだと思うのですが、その無効化方法がわかりません。 その無効化方法のご教授をお願い申し上げます。 //MYSQLの各種設定 public onlineCycleChkDao() { // JDBCドライバの指定 this.driver = "com.mysql.jdbc.Driver"; // データベースの指定 this.server = "xxxx"; // MySQLサーバ ( IP または ホスト名 ) this.dbname = "xx"; // データベース名 this.url = "jdbc:mysql://" + server + "/" + dbname + "?useUnicode=true&characterEncoding=UTF8"; this.user = "xxxxxx"; // データベース作成ユーザ名 this.password = "xxxxxx"; // データベース作成ユーザパスワード DBcon(); try{ stmt = con.createStatement(); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } } private void DBcon(){ try{ // JDBCドライバの登録 Class.forName(this.getDriver()); // データベースとの接続 con = DriverManager.getConnection(getUrl(), getUser(), getPassword()); con.setAutoCommit(false); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } catch(ClassNotFoundException ex){ ex.printStackTrace(); System.exit(2); } } public void closeConnection(){ // コネクション切断 try{ con.close(); } catch(SQLException e) { System.out.println("MySQL Close error."); } } //サイクルSQL private long selectMaxSeqNo(String table){ long maxSeqNo = -1; try{ ResultSet rs; String sql; sql = "SELECT SQL_NO_CACHE SEQ_NO, NOW() FROM " + table ; //ここの取得結果が更新されません。対象テーブルは他のプログラムにて更新 sql += " ORDER BY RGST_TIME DESC limit 1;"; rs = stmt.executeQuery(sql); System.out.println(sql); while(rs.next()){ maxSeqNo = rs.getInt("SEQ_NO"); } rs.close(); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } System.out.println("seqNo:" + maxSeqNo); return(maxSeqNo); } public ArrayList<Long> selectMaxSeqNoList(){ //対象テーブルから最新のシーケンスNoリストを取得する。 ArrayList<Long> seqNoList = new ArrayList<Long>(); for(String Table : TableList){ //最新のシーケンスNo取得 long recentSeqNo = selectMaxSeqNo(Table); seqNoList.add(recentSeqNo); } return(seqNoList); }

    • ベストアンサー
    • Java
  • postgresql接続時

    お世話になっています。 現在、postgresqlに接続し、指定のデータがなければ、dbを切断し、 切断中に、dbに接続されたら、エラーを発生させるようなプログラムを作成しています。 その際、org.postgresql.util.PSQLException: This ResultSet is closed.のようなエラーが発生します。 原因として、ResultSetにあるというのはわかるのですが、 ソースは、以下のように組んでいます。 static Connection con = null; static Statement stmt = null; static ResultSet rs ;; try { Class.forName("org.postgresql.Driver"); // PostgreSQLの場合 con = DriverManager.getConnection ("jdbc:postgresql:sample","moon","post"); // ステートメントオブジェクトを生成 stmt = con.createStatement(); String sql = " select id,pw from login where id='test' and pw='a'"; System.out.println(sql); // クエリーを実行して結果セットを取得 rs = stmt.executeQuery(sql); boolean ba = rs.next(); //もし、idがなければ、dbを閉じる if(ba == false) { System.out.println("rs:"+rs.next()); stmt.close(); con.close(); rs.close(); } catch (SQLException e) { } catch (ClassNotFoundException c) { } catch(Exception es) { } finally { } //この時点で、指定のid,pwが存在していないので、dbは切断中 //この状態でdbにアクセスする String sql = " select * from login"; // クエリーを実行して結果セットを取得 try { // ここから if(con !=null && stmt != null && rs !=null) { while(rs.next()) { System.out.println(rs.getString("id")); } }//ここまでが、何かがおかしい else {} } catch (SQLException e) {} この場合、どこが間違っているのでしょうか? 宜しくお願いします。

  • mysqlへの接続が出来ません

    まずは、サンプルプログラミングをコピーして実行してみましたが、上手くいきません。 package Connection; import java.sql.*; public class DBtest { public static void main(String[] args) { //java.sql Connection con = null; Statement stmt = null; ResultSet rs = null; String sqlStr; try { //ドライバクラスをロードする Class.forName("org.gjt.mm.mysql.Driver"); //MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "8080", "password"); //ステートメント生成 stmt = con.createStatement(); //SQL文 sqlStr = "SELECT * FROM TABLE"; //SQL文実行 rs = stmt.executeQuery(sqlStr); //検索結果数だけループ while(rs.next()){ //レコードの値 int id = rs.getInt("ID"); String name = rs.getString("NAME"); //表示 System.out.println(id + ":" + name); } //クローズ rs.close(); stmt.close(); con.close(); } catch (Exception ex) { try { //クローズ if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (con != null) con.close(); } catch (Exception e) { } //エラー ex.printStackTrace(); } } } 上記はEclipseでは文法エラーはありません。で実行してみると java.sql.SQLException: Access denied for user '8080'@'localhost' (using password: YES)になります。 サンプルにはDbname、ID,Passとあるので実際のDbnameとパスワードを入れているのですが駄目です。 IDは意味が良くわからないので8080を入れてみました。 どなたか教えて下さい。お願いします。 尚、当方全くの初心者です宜しくお願い致します。

    • ベストアンサー
    • Java
  • JSPでチェックボックスの最後を判定したい

    JSPでチェックボックスへチェックされた値が持っているテーブルの情報をデータベースへinsertするときに 最後にチェックされたものに1のフラグを立てたいと思っています。SQL文は 作成できましたが判定方法がわかりません。 isLastを使って、if文で判定すればよいことはわかったのですが・・・ isLastの書き方。アルゴリズムがわかりませんm(__)m タイムリミットになってしまい、あせっております。 ソースを載せたいとおもいます。 ?から?の部分です。 アドバイス&回答お願いいたします。 <% try{ int tmp; if(?rs.isLast()=ture?){ sql = "insert into questionnaire values (auto_number_questionnaire.nextval," +Integer.parseInt(nenndai) +"," +Integer.parseInt(gyousyu)+" ," +rs.getInt("koumoku_id")+" ,sysdate,default)" ; }else{ sql = "insert into questionnaire values (auto_number_questionnaire.nextval," +Integer.parseInt(nenndai) +"," +Integer.parseInt(gyousyu)+" ," +rs.getInt("koumoku_id")+" ,sysdate,'1')" ; } tmp = st2.executeUpdate(sql); }catch(SQLException ex){ out.println("データベースアクセスエラー2"); out.println(ex); }catch(Exception ex){ out.println(ex); } %>

  • ResultSet での問題

    だいたいのプログラム内容: login.htmlでログインを試み、そこからメールアドレス、パスワードがerrormsg.jspにパラメータで送られ、errormsg.jspからLoginBean.java(bean)を使いSQLデータに入ってるメールアドレス、パスワードと照らし合わされ、データに登録されていなかったら、エラーメッセージが返され、合っていたらwelcom.htmlページに送られます。 たまたま@ITで似たような内容があったので、基本的には同じように作りました。 でも、うまくデータを照合し分けることができません。パラメータは調べたらきちんと通っており。ResultSetの所に問題があると分かりました。 以下はLoginBean.javaの主な問題コードです。 public boolean confirm(){ try{ //SQLへの接続省略してます String sql_str = "SELECT email, password FROM customer where email='"+email+"'AND password='"+password+"'"; //ここが問題の部分です。 ResultSet rs = stmt.executeQuery(sql_str); if(rs!=null){ rs.close(); stmt.close(); connection.close(); return true; } else{ rs.close(); stmt.close(); connection.close(); return false;} }catch(SQLException e) { return false; }catch(Exception e){ e.printStackTrace(); return false;}}} このように、パラメータからきたアドレスパスワードを使い、SQLのSELECTで検索されたものをrsに返し、rsが空でなければ、trueを返します。(このメソッドはerromsg.jspから呼ばれます。)しかしデータに登録さてないものでもrsがnullでないと判断され、trueが帰ってきます。

    • ベストアンサー
    • Java
  • NetBeansではAccessのファイルから取得したデータを出力欄に表示できないのですか?

    開発環境にNetBeansを使っています。以下のプログラムを実行したときに出力欄に実行成功と表示されますが、データの値が表示されません。 コマンドプロンプトからの実行結果ではデータの値を表示しました。 どのようにすれば表示するのでしょうか? import java.sql.*; public class Main { static final String str = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb"; static final String sql = "SELECT * FROM ハローテーブル"; public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(str, "", ""); Statement stmt = con.createStatement(); System.out.println(sql); ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("No"); String lang = rs.getString("言語"); String msg = rs.getString("メッセージ"); System.out.println(no + " " + lang + " " + msg); } stmt.close(); con.close(); }catch(Exception e){ e.getStackTrace(); } } }

    • ベストアンサー
    • Java
  • コネクションプールについて

    コネクションプール有とコネクションプール無でDB接続・切断を繰り返したときに どれくらい差があるか試してみようと思いWebアプリ上(フレームワークにStruts2を使用)で 下記コードを実行してみました。 dbcpConnectメソッド(コネクションプール有) と jdbcConnectメソッド(コネクションプール無) をそれぞれ千回づつループで回して実行してみました。 結果は 【コネクションプール有】実行にかかった時間:157384 ミリ秒 【コネクションプール無】実行にかかった時間:158760 ミリ秒 で大差はありませんでした。 コネクションプールを使用するともう少し早いと思っていたのですがそのようなことはないのでしょうか。 public String test4() { // コネクションプール有の接続 long start = System.currentTimeMillis(); for(int i=0; i< 1000; i++) { dbcpConnect(); } long stop = System.currentTimeMillis(); System.out.println("実行にかかった時間は " + (stop - start) + " ミリ秒です。"); // コネクションプール無の接続 start = System.currentTimeMillis(); for(int i=0; i< 1000; i++) { jdbcConnect(); } stop = System.currentTimeMillis(); System.out.println("実行にかかった時間は " + (stop - start) + " ミリ秒です。"); return "jstl4"; } public void dbcpConnect() { Connection con = null; try{ Context context = new InitialContext(); //DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/library"); DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/dhcpTest"); con = ds.getConnection(); Statement stmt = con.createStatement(); String sql = "SELECT * FROM test.test"; ResultSet rs = stmt.executeQuery(sql); } catch(Exception e) { System.out.println("Error"); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } public void jdbcConnect() { Connection con = null; try{ con = DriverManager.getConnection("jdbc:mysql://localhost", "root", "root"); Statement stmt = con.createStatement(); String sql = "SELECT * FROM test.test"; ResultSet rs = stmt.executeQuery(sql); } catch(Exception e) { System.out.println("Error"); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • forward()でエラーが出て対応ができません。

    どなたか、教えてください。 サーブレットからDBに接続して、検索条件(名前)が一致しているレコードを取得。 request.setAttribute リクエストデータにその人の住所をセットし、別のjspファイルに送り 表示するプログラムなんですが。 getServletConfig().getServletContext().getRequestDispatcher("/jsp/result1.jsp").forward(request, response);の部分で、コミット済みというエラーが発生します。 下記がそのプログラムです。 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {      request.setCharacterEncoding("windows-31J");      String name = request.getParameter("name1");      Connection con=null;;      PreparedStatement ps =null;  try{       Context context = new InitialContext();     DataSource ds =(DataSource)context.lookup("java:comp/env/jdbc/FrameWork");     con = ds.getConnection();     ps = con.prepareStatement("SELECT * FROM address where name like ?;");     ps.setString(1, name);     ResultSet rs = ps.executeQuery();    rs.next();    String address =rs.getString("address");   request.setAttribute("address1", address);    rs.close();    ps.close(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ con.close();             }catch(SQLException e){e.printStackTrace();} }     try{ getServletConfig().getServletContext().getRequestDispatcher ( "/jsp/result1.jsp").forward(request, response);       }catch(Exception e){System.out.print(e);} } } エラーにも関わらず、ページは切り替わるのですが、アドレスはNULL値が表示されます。 一応、デバックをしてSQLの取得、リクエストデータのセットまでは、問題ないのは確認済みです。 乱文でわかりづらいのですが、どなたかお願いいたします。