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)
文字コードの変換がうまくいかないのだと思いますがどうすれば良いかわかりません。
どのようにしたら解決するでしょうか?
またおそらくクエリーを実行して結果の取得の部分以外にも
データが日本語なので値の取得の部分で希望の結果にならないと思います。
どのようにすれば良いでしょうか?
No.1
- 回答日時:
■まず、文字コードの変換は不要ではないでしょうか(というか、これでは変換になっていないと思いますが・・・)
素直に、SQLをそのままで。
ResultSet rs = stmt.executeQuery("SELECT * FROM ハローテーブル");
■次にエラーが文字化けしてわからないので、例外発生時にスタックトレースを取るのではなく、getErrorCode()、getSQLState()を表示させてみてはどうでしょうか。
この回答への補足
回答ありがとうございます。
回答を参考にして以下の部分を変更しました。
final String shiftJIS = "Shift_JIS";
String sql = encode("SELECT * FROM ハローテーブル",shiftJIS);
ResultSet rs = stmt.executeQuery(sql);
↓
ResultSet rs = stmt.executeQuery("SELECT * FROM ハローテーブル");
catch (Exception e) {
e.printStackTrace();
}
↓
catch (SQLException y){
System.out.println(y.getSQLState());
System.out.println(y.getErrorCode());
} 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;
}
上記の部分を削除
実行結果は
S0002
-1305
と表示されました。
このSQLStateとErrorCodeはどのような意味を表しているのでしょうか?
またどのようにしたら解決するのでしょうか?
データベースのテーブル名とデータの値が英語ならErrorが起こらないのかもしれませんが日本語を使いたいのでお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java eclipse実行ができない 2 2022/07/27 04:47
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
DB呼び出すページのはずなので...
-
propertiesが読み込めなくてnul...
-
log4jを使用し、JAVAのバッチプ...
-
CLASSPATHを設定しても、『Clas...
-
javaからデータベースに接続 エ...
-
javacのコンパイルでファイルが...
-
JSPファイルで生じるエラーをど...
-
vba クリップボードクリアにつ...
-
しばしばバージョン表記に現れ...
-
unzip32.dllの利用について(64b...
-
エクセルVBAを動かすノートPC...
-
エクリプスのプログラミングに...
-
IISワーカープロセスが原因でCP...
-
Pythonを無料(安価)で学ぶ方...
-
visual stadio 参照問題
-
gitでバージョン指定してダウン...
-
javaのジェネリックスでTとEの...
-
ActivePerlの旧バージョンのダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
propertiesが読み込めなくてnul...
-
javacのコンパイルでファイルが...
-
JAVA実行時エラーについて教え...
-
javaからデータベースに接続 エ...
-
CLASSPATHを設定しても、『Clas...
-
struts2環境構築で不具合が出て...
-
Tomcatでエラー
-
マイクラ1.7.10にcutallなどが...
-
javaのGUIツールキット
-
log4jを使用し、JAVAのバッチプ...
-
マイクラ Ender IO 入れたらク...
-
-Applet表示でのjava.lang.Clas...
-
javaサーブレット upload時
-
JavaMail関係でエラーが出ます
-
JasperExceptionのエラーログの...
-
AntでのJunitの試験
-
マイクラがクラッシュします。
-
Tomcat上で動くサーブレットが...
おすすめ情報