• 締切済み

HSQLDB のデータ更新エラー

よろしくお願いします。 HSQLDB に繋がっているのですが、データを更新しようとしたら、エラーになります。 どうすればよいのかお教え下さい。 以下のPGを実行したら(smt=org.hsqldb.jdbc.jdbcStatement@*****)と表示されますが、 コメントアウトを外して実行したら、(TABLE not found in [UPDATE ACCOUNT])とエラーが出ます。 package appsample; import java.sql.Connection; import java.sql.Statement; public class UpdateSample { public static void main(String[] args) throws Exception { Connection con = DBManager.getConnection(); Statement smt = con.createStatement(); // int count = smt.executeUpdate("UPDATE ACCOUNT SET MONEY=5000"); // System.out.println("update count : " + count); System.out.println("smt=" + smt); smt.close(); con.close(); } } [環境]HSQLDB1.8.7 Eclipse3.2.1

みんなの回答

  • kozai_001
  • ベストアンサー率58% (18/31)
回答No.1

>コメントアウトを外して実行したら、(TABLE not found in [UPDATE ACCOUNT])とエラーが出ます。 UPDATE ACCOUNT テーブルがみつからない? テーブル名はACCOUNTじゃないのですか。 >smt.executeUpdate("UPDATE ACCOUNT SET MONEY=5000"); executeUpdateメソッドの引数を確認されてはいかがでしょう。 Updateだから"ACCOUNT SET MONEY=5000"これでいいのではないのかな?

fukurai6
質問者

補足

ご返事をいただきましてありがとうございました。 やってみましたが、 Unexpected token: ACCOUNT in statement [ACCOUNT]とエラーが出ます。 HSQLDBに直接(UPDATE ACCOUNT SET MONEY=5000)を実行したら成功しましたので、引数には問題はなさそうです。

関連するQ&A

  • Javaです。

    以下のSQLのcustomerのc_idの最大値を求め、表示させたいのですが、上手くいかず、エラーが返ります。 Customerはデータベースに格納されています。 以下ソースです。 ・・・・・・・・・ String sql="select max(c_id) as max_c from customer"; Connection con = null; Statement smt = null; try { con = DBManager.getConnection(); smt = con.createStatement(); ResultSet rs = smt.executeQuery(sql); out.println(rs.getInt("max_c")); }catch(SQLException e){ throw new ServletException(e); }finally{ if(smt != null){ try{smt.close();}catch(SQLException ignore){} } if(con != null){ try{con.close();}catch(SQLException ignore){} } } ・・・・・・・ //恐らく、out.println(rs.getInt("max_c")); の表示クエリに問題があると思うのですが、どうすればいいか分からず質問しました。 具体的なソース等、解決策を教えて下さい。 Java素人です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ラジオボタンを使って更新 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>

  • JDBCについて

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.Statement; public class DBtest { public static void main(String[] args){ try { Connection con = null; PreparedStatement ps = null; String url = "jdbc:mysql://localhost/address"; String user = "test"; String password = "pass"; con = DriverManager.getConnection(url, user, password); Statement st = (Statement) con.createStatement(); Statement st2 = (Statement) con.createStatement(); String sql = "SELECT * FROM data2"; ResultSet rs = st2.executeQuery(sql); try { System.out.println("ok"); // ここでクエリを実行 while(rs.next()){ System.out.println(rs.getString("name")+rs.getString("age")); } //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader na = new BufferedReader(new InputStreamReader(System.in)); String Na = na.readLine(); String ins = "INSERT INTO data2(name,age)VALUES('?',20)"; ps = (PreparedStatement) con.prepareStatement(ins); ps.setString(1,Na); ps.executeUpdate(); //INSERT実行 int rs2 = st2.executeUpdate(ins); System.out.println(rs2); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } finally { // 直前の try ブロックに入ったら、ここは必ず実行される con.close(); } } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); // 接続できない時 } } } 現在javaでmysqlに接続してDB内の検索や追加等を行うものを作成しています。 現状は入力されたものをDBに追加することまでできましたが 検索で 入力された値がDBの中に一致する、または部分一致したものを表示させるやり方がわかりません

    • ベストアンサー
    • Java
  • getConnection( )メソッドの戻り値

    御世話になります。 下記のプログラムで「型 Connectionの結果を戻す必要があります」 とエラーが出てしまうのですが、原因が分からず困っております。 過去ログをみても分からなかった為、ご教示いただけます様 宜しく御願い致します。 package info.aaaa; import java.sql.Connection; import java.sql.DriverManager; public class DBManager{ public static Connection getConnection(){ try{ Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/aaaa?useUnicode=true&amp;characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url,"cccc","vvvv"); return con; } catch(Exception e){ } } public static void main(String args[]) throws Exception{ Connection con = getConnection(); System.out.println("con=" + con); con.close(); } }

    • ベストアンサー
    • Java
  • MySQL JDBC エラー

    以下のJDBCでのエラーに悩まされています。 ご教授お願いします。 import java.sql.*; public class RootingM { public static void main(String[] args) { System.out.println( \"=> loading driver:\" ); Class.forName(\"com.mysql.jdbc.Driver\"); System.out.println(\"Ok\"); System.out.println( \"=> connecting:\" ); Connection con = null; con = DriverManager.getConnection(url, user, pass); System.out.println(\"Ok\"); Statement stmt = con.createStatement(); ~~~ 以下省略 ~~~ 【DOS プロンプト】 => loading driver: OK => connecting: java.sql.SQLException: Communication link failure: java.io.IOException, underlyi ng cause: Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** java.io.IOException MESSAGE: Unexpected end of input stream STACKTRACE: java.io.IOException: Unexp

    • ベストアンサー
    • Java
  • データ数をカウントしたいのですが

    JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは Connection con = null; String sql = "select count(*) from テーブル名"; // コネクションを作成する。 con = DriverManager.getConnection(url, user, pass); Statement st = con.createStatement(); // SQLを実行する。 ResultSet rs = st.executeQuery(sql); String count = rs.getString("count(*)"); 実行した結果上手く出来ないのですが、この部分での間違いはありますか?

    • ベストアンサー
    • Java
  • サーブレットに関して

    ポスグレのデータベースをイクリプスと連携させようとしています。 現状は接続の確認として下記Connect13.javaを実行し接続確認をしています。 しかし、405が表示されてしまい接続が上手くいきません。 どこが間違っているのか教えて頂きたいです。 下記が現在のスペックです。 OS:Windows バージョン 10 Eclipse 4.0 ※ソースコードは------で分けて今回はここに記載しています。 よろしくお願いいたします。 Connect13.java package jp.co.sss.dao; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jp.co.sss.dao.DBManager; @WebServlet("/connect13") public class Connect13 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; con = DBManager.getConnection(); if(con !=null){request.setAttribute("message","接続に成功しました。"); } DBManager.close(con); request.getRequestDispatcher("/jsp/sample13/pizza_result2.jsp").forward(request, response); } } ----------------------------------------------------------------------------------------------------------------------- DBManager.java package jp.co.sss.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DBManager { public static Connection getConnection(){ String url="jdbc:postgresql://localhost:5432/postgres"; String user = "postgres"; String password = "reds1113"; try{ Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url,user,password);////urlの指定のみ return con; }catch (Exception e){ throw new IllegalStateException(e); } } public static void close(Connection con){ if (con !=null){ try{ con.close(); }catch (SQLException e){ e.printStackTrace(); } } } public static void close(PreparedStatement ps, Connection con){ if (ps !=null) { try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } if (con != null){ try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } } } ----------------------------------------------------------------------------------------------------------------------- pizza_result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>シェアードピザ</title> </head> <body> <article class ="main"> <h2>${message}</h2> <form action="<%=request.getContextPath()%>/connect13"method="post"> <input type="submit" value="接続画面に戻る"/> </form> </article> </body> </html>

  • Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

    すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。 ●Javaプロジェクトの場合(成功)  ・Javaプロジェクト作成 → 新規 → クラスを作成。  ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  ・次のソースの実行にて、JDBC Dirverの接続を確認。 [JdbcSample.java] import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "(ユーザー名)", "(パスワード)"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } ●TomCatプロジェクト作成の場合(失敗)  (1)TomCatプロジェクト作成 → 新規 → クラスを作成。  (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  (3)サーブレットからBeanの呼び出し。  「​http://localhost:8080/test_mvc/jdbcSample​」  (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?) [servlet] package ne.jp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestMvc extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JdbcSample da = new JdbcSample(); try { da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // HTML出力の準備 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body><p>こんにちわ!</p></body>"); } } [Bean] package ne.jp; import java.sql.*; class JdbcSample { //Beanコンストラクタ public JdbcSample(){ } //データベースアクセス確認 public void dbAccessTest(){ try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "***", "*****"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } }

    • ベストアンサー
    • Java
  • コンパイルエラー

    JBuiderでコンパイルしようとするとエラーがでてしまいます。ソースは以下の通りです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Integer count=(Integer)session.getAttribute("count"); if(count == null){  count = new Integer(0); }else{  count = new Integer(count.intValue()+1); } session.setAttribute("count",count); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out= response.getWriter(); out.println("<html>"); out.println("<head><title>TestServlet</title></head>"); out.println("<body>"); out.println(session.getId()); out.println("<p>\"count\"という名前のattribute = " + count +"</p>"); out.println("</body></html>"); out.close(); } } これをコンパイルすると、 "TestServlet.java": エラー #: 300 : メソッド getAttribute(java.lang.String) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 9, 列 36 "TestServlet.java": エラー #: 300 : メソッド setAttribute(java.lang.String, java.lang.Integer) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 15, 列 13 というメッセージがでます。何が原因なのか教えてください。

  • 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