代码如下:
在使用包含文字(中文,日文)的SQL文时会抱错,错误信息是乱码。使用的系统环境是日文,并且只要把文字改成了英文,就不出任何问题。import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class TestInsertSQL { /**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strConnectionString = "jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};DBQ="
+ "..\\FIMD.mdb";
Connection conn = DriverManager.getConnection(strConnectionString);
Statement stmt = conn.createStatement();
byte[] bytes = "中文".getBytes();
String strD = new String(bytes, "UTF-8");
String strSQL = "insert into MKINDLIST_PRE VALUES('4', '" + strD + "')";
stmt.executeUpdate(strSQL);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}错误信息:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] ?p?X '(?s??)' ?͐?????????܂???B?p?X???ɊԈႢ???Ȃ????ƂƁA?t?@?C?????u???ꂽ?T?[?o?[?ɐڑ????Ă??邱?Ƃ??m?F???Ă????????B
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 dbutilityTest.TestInsertSQL.main(TestInsertSQL.java:19)谁遇到过这种问题?怎么能解决呢?
在使用包含文字(中文,日文)的SQL文时会抱错,错误信息是乱码。使用的系统环境是日文,并且只要把文字改成了英文,就不出任何问题。import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class TestInsertSQL { /**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strConnectionString = "jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};DBQ="
+ "..\\FIMD.mdb";
Connection conn = DriverManager.getConnection(strConnectionString);
Statement stmt = conn.createStatement();
byte[] bytes = "中文".getBytes();
String strD = new String(bytes, "UTF-8");
String strSQL = "insert into MKINDLIST_PRE VALUES('4', '" + strD + "')";
stmt.executeUpdate(strSQL);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}错误信息:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] ?p?X '(?s??)' ?͐?????????܂???B?p?X???ɊԈႢ???Ȃ????ƂƁA?t?@?C?????u???ꂽ?T?[?o?[?ɐڑ????Ă??邱?Ƃ??m?F???Ă????????B
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 dbutilityTest.TestInsertSQL.main(TestInsertSQL.java:19)谁遇到过这种问题?怎么能解决呢?
其次看错误提示,你的数据库连接有错误啊,数据库没连接到,为什么LZ不用纯的JDBC连接呢
转换那个,是因为原来我在数据库中写了中文,读取出来的时候,变成了乱码,有朋友说,用转换一下,转成UTF-8后再保存,之后读取的时候就不会出现乱码了。
而且,即使不转换,也是出现同样的错误,现在错误信息我看不到,全部是乱码。SQLSTATE是37000