代码如下:
在使用包含文字(中文,日文)的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)谁遇到过这种问题?怎么能解决呢?

解决方案 »

  1.   

    你access文件的存放地址没写错吧
      

  2.   

    看你用的是ACCESS作为数据库,我不知道你为什么要把中文转换成UTF-8。不过问题好像就出在这里。试验一下不转换
      

  3.   

    首先byte[] bytes = "中文".getBytes(); 里的“中文”是你想要转换的吗?
    其次看错误提示,你的数据库连接有错误啊,数据库没连接到,为什么LZ不用纯的JDBC连接呢
      

  4.   

    数据库我试了,没有问题,如果把那个文字改成英文,直接就正常终了,并且添加到数据库中。
    转换那个,是因为原来我在数据库中写了中文,读取出来的时候,变成了乱码,有朋友说,用转换一下,转成UTF-8后再保存,之后读取的时候就不会出现乱码了。
    而且,即使不转换,也是出现同样的错误,现在错误信息我看不到,全部是乱码。SQLSTATE是37000