连接的数据库是[b][color=red]access[/color][/b]
[code="java"] Statement st=null;
ResultSet rs =null;
try {
st=conn.createStatement();
rs= st.executeQuery("select * from B01 where 1=1 ");
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
System.out.println(count);
for(int i = 1;i<=count; i++){
String colName;
try {
colName=rsmd.getColumnLabel(i);//这里出现乱码了,试了很多方法都不行
System.out.println(colName);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
[/code]
得到的colName是乱码,试了getBytes()不行
在连接里面指定charSet,
JdbcOdbcDriver中获得连接
[code="java"]
public synchronized Connection connect(String s, Properties properties)
throws SQLException
[/code]
properties里面指定charSet。
默认的charSet是
[code="java"]
properties.getProperty("charSet", System.getProperty("file.encoding"));
[/code]
[code="java"] try {
colName=new String(colName.getBytes("iso-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}[/code]
假如还有乱码,你把这几个参数不停的变换一下比如gbk,gb2312什么的。你试试。
还有 你数据库表里面是乱码吗
连接语句贴一下
[url]http://www.iteye.com/problems/60888[/url]
确实不太好解决。再找找其他方法。
[code="java"]你myeclipse编码和数据库格式统一,就好了[/code]
看看你数据库,本身存的数据是不是乱码?关于乱码,要弄清:是存进去就变成乱码(数据库存的就是乱码),还是取出来就是乱码(存的数据不是乱码,但是取出来就乱码)啊,解决方格式法很多:1.Jar包不兼容 2.需要转码 3.数据库连接字符串,后面加编码
[code="java"]你把数据编码格式改成gbk 或者utf-8[/code]
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class ConnectAccess {
public void ConnectAccessFile() throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
/**
* 直接连接access文件。
/
Properties info = new Properties();
info.setProperty("charSet","GB2312");
info.setProperty("user", "cms");
info.setProperty("password", "cms");
String url = "jdbc:odbc:driver={Microsoft Access Driver (.mdb)};DBQ=G://cms.mdb";
Connection conn = DriverManager.getConnection(url, info);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from DEMO_USER");
while (rs.next()) {
System.out.println(rs.getString("du_id"));
System.out.println(rs.getString("du_name"));
System.out.println(rs.getString("du_account"));
System.out.println(rs.getString("du_password"));
}
rs.close();
stmt.close();
conn.close();
}
public static void main(String args[]) throws Exception {
ConnectAccess ca = new ConnectAccess();
ca.ConnectAccessFile();
}
}