• 締切済み

サーブレットからJavaBeansを利用したDB接続について

yuki22の回答

  • yuki22
  • ベストアンサー率28% (8/28)
回答No.1

こんばんは^^ その本持ってないので何ともいえませんがもしかして??って思った事を書かせていただきますね。 アクセスもSQL文ですよね?? Connectionミス。 トムキャットが立ち上げってない。(再起動とか) SQL構文ミス。 importでsql.*;しちゃったほうが・・してたらごめんなさい。 JSPがWeb-infに入ってる。 などだと思うのですが・・、全部やってるよ!って感じでしたらごめんなさい。 もう少し心当たり探ってみますね。

nankurunaisa2006
質問者

お礼

すいません。先日お礼の投稿をさせていただいたつもりでいたのですが、表示されていないようですので再度投稿いたします。 ご指摘いただいた点はいずれも問題ありませんでした。 TOMCATは正常に動いており、SQLも正しいと思います。 JSPの配置も問題ありませんでした。

関連するQ&A

  • Tomcat上で動くサーブレットがデータソースを見つけられない

    こんにちは。 以前にjdbcとサーブレットに関する質問をさせてもらった者です。 以前の質問に対する皆さんのご回答のおかげで、以前の問題は解決し、あとは自分でなんとかすると言っていたのですが… 新たな問題に直面しまして自分なりに努力はしたのですが、やはり解決には至らず、結局皆さんの助言を賜りたくて来ました。 JDBC-ODBCブリッジドライバを使って、Oracle10gデータベースを問い合わせるTomcat6.0サーバ上で動作するサーブレットの構成を行っています。 データベース、サーバ、サーブレットは同一のハードウェア内で動作しています。 環境は以下の通りです。 データベース : Oracle10g 使用ポート番号:8081 データソース名:OracleInXE サーバ : Tomcat6.0 使用ポート番号:8080 接続API : jdbc-odbcブリッジドライバ データベース接続部のソースを一部抜粋します。 ~ Connection connection = null; Statement statement = null; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connection = DriverManager.getConnection("jdbc:odbc://localhost:8081/OracleInXE",user.getName(),user.getPassword()); statement = connection.createStatement(); ~ SQLExceptionで取得したスタックトレースの内容を記述します。 [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at employeeManagementSystem.Query.authentication(Query.java:59) at Run.main(Run.java:33) しかし上記の場合だとSQLExceptionga発生し、"データ ソース名および指定された既定のドライバが見つかりません。"と表示されます。 サーブレットがデータソースを見つけられない原因は何でしょうか。 あと、その解決法や、役立つ情報があれば教えて下さい。 宜しくお願いします。 データソースのURLが間違っているのでしょうか。 また、ドライバクラスとURL表記の組み合わせも色々あるみたいでややこしいです… 何か、小さい事に引っかかっている感じがするのですが。

    • ベストアンサー
    • Java
  • JDBC-ODBC-MDB(日本語テーブル・カラム名)アクセスで、ODBC -1305エラー

    日本語のテーブル名・カラム名を使用したAccess(2000) mdb に JSPおよびServletからJDBC(ODBC経由)でアクセスすると、 SQL実行[executeQuery()]時に下記のエラーが発生します。 getMessage(): [Microsoft][ODBC Microsoft Access Driver] getErrorCode(): -1305 getSQLState(): S0002 ただし、 1.Javaアプリケーションから直接JDBC(ODBC経由)でアクセスすると正常に動作します(ResultSet取得)。 2.JSP・サーブレットからのアクセスでも、   2-1.テーブル名・カラム名がascii文字のテーブルの場合   2-2.テーブル名・カラム名が日本語でも、SQLで使わない場合      例:SELECT now()   の場合は、 正常に動作します(ResultSet取得)。 JSP Servletは   contentType="text/html; charset=Windows-31J"   pageEncoding="windows-31j" で、保存形式は 日本語Shift_JISです。 出力画面表示に文字化けはありません。 作業環境はノートPC1台で、  Tomcat: 5.5.27 JDK/JRE : 1.6.0_07  Eclipse: 3.4.2  OS:Vista Ultimate SP1  ODBCデータソース:システムDNS Microsoft Access Driver(*.mdb) 6.00.6001.18000 ODBCJT32.DLL です。 諸兄のお知恵を拝借お願いします。 ※エラーコードの内容は? ※どのあたりを調べればよいか? ========================= Servletの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) ========================= JSPの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at org.apache.jsp.TestODBC_jsp._jspService(TestODBC_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

  • SQLException

    利用者情報をDBに登録させるアプレットを作成していますが、実行時エラーでSQLExceptionが出てしまい困っています。 ネット等で調べたのですが、芳しいものがなく、エラーメッセージもさっぱりわからず、どうにもなりません。 以下はエラーです。 ****************************** java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]記述子のインデックスが無効です。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLColAttributes(Unknown Source) at sun.jdbc.odbc.JdbcOdbcResultSet.getColAttribute(Unknown Source) at sun.jdbc.odbc.JdbcOdbcResultSet.getColumnType(Unknown Source) at sun.jdbc.odbc.JdbcOdbcResultSet.getMaxCharLen(Unknown Source) at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source) ~以下省略~ java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source) at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source) ~以下省略~ ********************************* javaとPlug-inはver.1.4.2、OSはWinXPです。 実行はローカルで行いたいと思っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipseからDBへの接続

    java:1.6.0_1、mysql:5.1、eclipse:3.5、jdbc:mysql-connector-java-5.1.10-bin.jarです。 エラーが MYSQLエラーコード:0 エラーメッセージ:Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. SQLStateコード:08S01 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2214) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:781) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at chap2.DBConnect.main(DBConnect.java:13) Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137) ... 12 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:525) at java.net.Socket.connect(Socket.java:475) at java.net.Socket.<init>(Socket.java:372) at java.net.Socket.<init>(Socket.java:215) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292) ... 13 more 初心者でなにがだめか調べてもわかりません。 どなたかご指導おねがいします

  • テーブル名が日本語だとクエリーを実行して結果を取得したときにエラーになる。

    import java.sql.*; import java.io.*; public class Main { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String cString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/hello.mdb"; Connection con = DriverManager.getConnection(cString, "", ""); Statement stmt = con.createStatement(); final String shiftJIS = "Shift_JIS"; String sql = encode("SELECT * FROM ハローテーブル",shiftJIS); 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.printStackTrace(); } } static String encode (final String sql, final String charset) throws UnsupportedEncodingException { return sql != null ? new String(sql.getBytes(), charset) : null; } } 上記のプログラムで以下の結果を出力したいです。 1  日本語  こんにちは世界 2  英語   Hello Word しかし、以下のエラーが表示されます。 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] ??̓e?[?u???܂??̓N?G?? '繝上Ο繝シ' ?????‚???܂???ł????B???̃e?[?u????N?G???????݂??Ă??邱?ƁA?܂??͖??O???????????Ƃ??m?F???Ă????????B at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at javaapplication1.Main.main(Main.java:34) 文字コードの変換がうまくいかないのだと思いますがどうすれば良いかわかりません。 どのようにしたら解決するでしょうか? またおそらくクエリーを実行して結果の取得の部分以外にも データが日本語なので値の取得の部分で希望の結果にならないと思います。 どのようにすれば良いでしょうか?

    • ベストアンサー
    • Java
  • MySQLを利用したサーブレットの実行時のエラーについて。

    ローカルマシンにMySQLをインストールし、サーブレットでアクセスするプログラムを作っています。MySQLの動作は確認済みです。 MySQLのPATHとJDBCドライバのCLATHPASSの設定もしました。サーブレットのソースはWEB上のサンプルをそのまま利用しています。 DBの設定部分のソース↓ Class.forName("org.gjt.mm.mysql.Driver"); Connection con = DriverManager.getConnection"jdbc:mysql:///hellodb"); PATH↓ C:\Program Files\mysql\bin CLATHPASS↓ C:\j2sdk1.4.0\jre\lib\ext\mysql-connector-java-3.0.2-beta-bin.jar エラー内容は以下の通りです。 --------------------------------------------------------------------- java.sql.SQLException: Column 'NO' not found. at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2862) at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:1338) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:24) --------------------------------------------------------------------- DBへアクセスできていないと思うのですが、自分で調べた限りでは前述の設定以外の方法が調べきれませんでした。 お力添えお願いいたします。

  • java データベース接続

    javaの勉強していまして、質問があります。よろしくお願いします。 javaでデータベースの接続ができなくて迷っております。ずっとネットで調べてもダメでした。 ネットで調べたとおりにやっても、 例外発生:java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver このようなエラーがでます。 eclipseを使ってます。windows7 練習にアクセスにつなごうと思ってます。 事前にデータソース(ODBC)の登録はしました。 ドライバーとかインストールするものなのでしょうか? package sample; import java.sql.Connection; import java.sql.DriverManager; public class Hello { public static void main(String args[]) { try { //JDBCドライバのロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //各設定 String url = "jdbc:odbc:SampleDB030"; String user = ""; String pass = ""; //データベースに接続 Connection con = DriverManager.getConnection(url,user,pass); System.out.println("接続成功"); //データベースを切断 con.close(); } catch (Exception e) { System.out.println("例外発生:" + e ); } } }

    • ベストアンサー
    • Java
  • MySQLへの接続なんですが・・。

    下記にあるJAVAのソースファイルがあるのですが、コンパイルしてクラスファイルをつくり、実行してもうまくいきません。 windows2000Professional, j2sdk1.4.0_01, MySQL3.23.47 // uc/BaseJdbc.java import java.sql.* ; public class BaseJdbc { public static void main(String[] args) { final String LINE = "---------------------------------------\n" ; try { Class.forName("org.gjt.mm.mysql.Driver") ; // JDBCドライバ登録 System.out.println("\n" + LINE + "MySQLのJDBCドライバを登録。") ; Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/river_data", "Administrator","lled") ; System.out.println("データベース「jdbc:mysql://localhost/" + "river_data」へ接続。") ; } } } 下記、コマンドプロンプトにて実行画面。 D:\azMySq\uc\BaseJdbc>java BaseJdbc --------------------------------------- MySQLのJDBCドライバを登録。 java.sql.SQLException: Invalid authorization specification: Access denied for us er: 'Administrator@localhost' (Using password: YES) at org.gjt.mm.mysql.MysqlIO.init(MysqlIO.java:330) at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:261) at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89) at org.gjt.mm.mysql.Driver.connect(Driver.java:167) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at BaseJdbc.main(BaseJdbc.java:20)

  • DBの接続

    いつもお世話になります。 DBに接続するとき、ドライバクラスをロードする方法が分かりません。 Class.forName("xxx"); という形をしていると思うのですが、 xxxに入る文字列はどのようにして分かるのですか? helloworld(http://www.hellohiro.com/jdbc.htm)では sun.jdbc.odbc.JdbcOdbcDriverとなっていますが、 これをこのまま使うとエラーになります・・・ 基本的なことですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Tomcat上でMS-ACCESSに接続しようとするとメモリ不足になる

    Tomcatサーバー上で、MS-AccessにODBC経由で接続しようとすると、 "java.sql.SQLException [Microsoft][ODBC Microsoft Access Driver] メモリ不足です。" というエラーになってしまいます。 Javaのコードは、以下のようになります。 --------------------------------------------------------- Connection conn = null; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:データソース名"); --------------------------------------------------------- 上記3行目の、DriverManagerの部分でエラーになってしまいます。 同じサーバー上でOracleやDB2へのJDBC接続は問題なく接続できます。 TomcatのJavaメモリ設定は、以下のようになっております。 Initial memory pool : 1024 MB Maximum memory pool : 1536 MB Thread stack size : 1024 MB サーバーの物理メモリは2GBで、通常時のメモリ使用量はおおよそ1.4GB程なのでメモリ不足にはならないと思われるのですが、なぜ接続できないのでしょうか? また、同じプログラムをローカル上で実行した場合には、問題なく接続できます。 尚、サーバーの環境は以下のようになります。 OS : Windows 2003 Server R2 メモリ : 2GB Tomcatのバージョン : 5.5 JDKのバージョン : 1.5 以上、宜しくお願い致します。