用java写一个很简单的数据库访问程序,但是如果表跟字段中出现中文,会出现这样的错误:java.sql.SQLException: Column not found
解决方法之一是在连接是指定gb2312
Properties prop = new Properties();
prop.put("charSet", "gb2312");
prop.put("username", username);
prop.put("password", password);
connect=DriverManager.getConnection(url,prop);
完整的程序:
package my;
import java.sql.*;
import java.util.Properties;
import javax.swing.JOptionPane;
public class DataBase {
static Connection connect;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if((connect=connectByJdbcOdbc("jdbc:odbc:AccessDB","",""))!=null){
JOptionPane.showMessageDialog(null, "连接数据库成功");
try{
readRecord();
connect.close();
connect=null;
}catch(SQLException e){
System.out.println("关闭数据时异常");
}
}else{
JOptionPane.showMessageDialog(null, "连接数据库失败");
}
}
static void readRecord(){
Statement staSql;
ResultSet rs;
//读数据库
try{
staSql=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=staSql.executeQuery("SELECT * FROM 表1");
rs.first();
System.out.println("staSql OK");
System.out.print(rs.getString("学号")+" ");
System.out.println(rs.getString("姓名"));
}catch(Exception e){
System.out.println("read error");
System.out.println(e);
}
}
public static Connection connectByJdbcOdbc(String url,String username,String password){
Connection connect;
Properties prop = new Properties();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
prop.put("charSet", "gb2312");
prop.put("username", username);
prop.put("password", password);
}catch(Exception e){
e.printStackTrace();
return null;
}
try{
connect=DriverManager.getConnection(url,prop);
}catch(SQLException e){
e.printStackTrace();
return null;
}
return connect;
}
}