日本語のテーブル名・カラム名を使用した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)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
S0002 Base table not found
と言う事みたいですね。
DB接続時に文字コードとかしていしてみたらどうでしょう。
この回答への補足
最終報告
すでに報告済みですが、Eclipseの使い方の問題という認識です。実は既存プロジェクトをインポートし、一部修正のうえビルドし動作確認をしていました。Eclipseの文字コードのデフォルトUTF-8が、M932で記述された既存プロジェクトにそのまま作用し、その結果日本語文字テーブル、フィールド名が化けていたのではないかと推測しています。ただ、WARでエクスポートしたあとTomcatに配備したら正常に動作したことの説明がつくのか疑問でもあります。なぜなら、classファイル(JDBCはJSPではなくBeanで実装しています。)はEclipse側でコンパイル済みのはずだからです。
最近では、インポートしたあと、そのプロジェクトの文字コードをUTF-8からM932に修正することで事なきを得ています。
ODBC あるいは MDB側で、実際にJDBCから発行されたSQLをログなりフックするなりして確認をすれば良かったと思うのですが、その方法の調査は後日の課題とし、このスレッドを閉じさせていただきます。
ご協力いただきました諸兄に感謝申し上げます。
Yanchさま ご回答ありがとうございます。
>S0002 Base table not found
上を手掛かりに「ODBCエラーメッセージ」が見つかりました。
http://msdn.microsoft.com/ja-jp/library/aa937531 …
>DB接続時に文字コード
「JDBC API 入門>Connection>2.1.4 "odbc" のサブプロトコル」
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ …
に、
jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*
とあります。設定は
1.URLの拡張
url="jdbc:odbc:jsys;characterEncoding=SJIS";
2.Properties の利用
Properties info=new Properties();
info.setProperty("characterEncoding", "SJIS");
con = DriverManager.getConnection(url,info);
でよいかと思うのですが、いかんせん
文字コードを設定する場合の 属性名・値の組が見つかりません。
ちなみに、上例は玉砕でした。
No.2
- 回答日時:
JDBCドライバで使用可能なattributeの一覧は、
以下のような方法で、取得できる様子ですが、得られるattributeの一覧は、
正式に仕様化されているものではなく、暫定的な物らしいので、
将来予告無く変更されるかもしれません。
/**
* Get Driver properties
* @param database URL
* @return list of driver properties
* @throws SQLException if the query fails
*/
public List getDriverProperties(final String url)
throws SQLException
{
List driverProperties = new ArrayList();
Driver driver = DriverManager.getDriver(url);
if (driver != null)
{
DriverPropertyInfo[] info = driver.getPropertyInfo(url, null);
if (info != null)
driverProperties = Arrays.asList(info);
}
return driverProperties;
}
この回答への補足
元環境にてEclipseのサーバー関連の設定・操作を行っていたところ、正常に動作するようになりました。残念ながら、原因を特定するに至っていません。週末、不具合の再現に取り組んでみますが、Eclipseの理解不足が根幹にありました。
いろいろありがとうございました。
取り急ぎご報告とお礼まで。
Yanchさん、ご連絡ありがとうございます。
ソースまで助かります(下記の理由で、別途利用させていただきます)。
全く同じモジュールで、Eclipseからの実行時に発生する本障害が、
Tomcatに配備(※)した場合には発生せず、日本語mdbから正しく
情報を得ることができることが確認できました。
プログラムの問題ではなく、Eclipse 3.4.2の環境設定に
まずい部分があるのだという仮定で、続けて調べています。
週末に XP/2000を用意して、そこで同じEclipseを立ち上げて
マシン環境ではないことも確認してみる予定です。
遅くなりましたが、経過報告まで。
※EclipseにてWARファイルにエクスポートして、Tomcatのmanagerで配備。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Java Java です 途中は省いてますが for(int i = 0; i < 25; i ++) { s 4 2022/05/20 23:36
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- 英語 「第2文型主語のwhat節が前置詞の目的語である場合に、補語の前に同じ前置詞が必須なのか」について 2 2023/05/12 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのエラーについて
-
Eclipseにdllがうまく読み込めない
-
javacのコンパイルでファイルが...
-
javaからデータベースに接続 エ...
-
JasperExceptionのエラーログの...
-
JSFで、マネージビーンに画面の...
-
Tomcatのweb.xmlの設定について
-
java と javax の違いは?
-
System.inをClose()すると例外...
-
javaのGUIツールキット
-
アプレットとポスグレで・・・
-
CLASSPATHを設定しても、『Clas...
-
javaについて教えてください。j...
-
JSPファイルで生じるエラーをど...
-
vba クリップボードクリアにつ...
-
gitでバージョン指定してダウン...
-
IISワーカープロセスが原因でCP...
-
EclipseでJavaコンパイラのバー...
-
データベースのデータをTextBox...
-
JavaとAndroidアプリ(Java)違...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
propertiesが読み込めなくてnul...
-
javacのコンパイルでファイルが...
-
JAVA実行時エラーについて教え...
-
javaからデータベースに接続 エ...
-
CLASSPATHを設定しても、『Clas...
-
struts2環境構築で不具合が出て...
-
Tomcatでエラー
-
マイクラ1.7.10にcutallなどが...
-
javaのGUIツールキット
-
log4jを使用し、JAVAのバッチプ...
-
-Applet表示でのjava.lang.Clas...
-
javaサーブレット upload時
-
マイクラ Ender IO 入れたらク...
-
JavaMail関係でエラーが出ます
-
JasperExceptionのエラーログの...
-
AntでのJunitの試験
-
マイクラがクラッシュします。
-
Javaでマウスカーソルを操作
おすすめ情報