Java ODBC 连接 MS Access 和 MS Excel

Java ODBC 连接 MS Access 和 MS Excel :

1,ACCESS ODBC 连接url,如:
 不采用dsn:"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/mydb201411.mdb"; //这种方式不需要配置ODBC DSN,需要写明物理路径
 需要配置系统dsn: "jdbc:odbc:mydb201411"

2,EXCEL ODBC 连接url,如:
 不采用dsn:
  查询: "jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=e:/myexceldb201411.xls"; //这种方式不需要配置ODBC DSN,需要写明物理路径
  更新: "jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=e:/myexceldb201411.xls;ReadOnly=0"
 需要配置系统dsn: "jdbc:odbc:myexceldb201411"

3,查询EXCEL ,表名用"[]"包裹sheet名,如:
 "select * from [logsheet2$] "
4,访问均支持 PreparedStatement

5,数据插入Access表,不支持一语句多条记录的方式,比如:"insert into xxx values ('',''),('','')"

 

--------------------------------------------------------------------------------------------------------------------------------------------

 

 public static void logquery_Access(){

  Connection con = null;
  ResultSet rs = null;  
  Statement st = null;
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/mydb201411.mdb"; //这种方式不需要配置ODBC DSN
   //String url = "jdbc:odbc:mydb201411";   //这种url也能访问,但是,需要配置 ODBC DSN
   con = DriverManager.getConnection(url);
   String sql = "select * from matterlogs ";   
   st = con.createStatement();
   rs = st.executeQuery(sql);
   while (rs.next()) {
    String s = "";
    for (int i = 1; i < 6; i++) {
     s+= rs.getString(i)+",";
    }
    System.out.println(s);    
   }    
   
  } catch (ClassNotFoundException e) {   
   e.printStackTrace();
  } catch (SQLException e) {   
   e.printStackTrace();
  } finally{   
   try {
    if( rs!=null )   rs.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }
   try {
    if( st!=null ) st.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }
   try {
    if( !con.isClosed() ) con.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }   
  }  
 }
 
 public static int loginsert_Access(){
  int res = 0 ;
  Connection con = null;  
  Statement st = null;
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/mydb201411.mdb";//这种方式不需要配置ODBC DSN
   //String url = "jdbc:odbc:mydb201411";  //这种url也能访问,但是,需要配置 ODBC DSN
   con = DriverManager.getConnection(url);
   String sql = "insert into matterlogs (id,htime,host,matters) values('14','2014-02-03 12:34:56','OA','geton') ;";   
   st = con.createStatement();
   res = st.executeUpdate(sql);      
   
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally{   
   try {
    if( st!=null ) st.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
   try {
    if( !con.isClosed() ) con.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }   
  } 
  return res; 
 }
 
 public static void logsinsert_Access(){
  
  Connection con = null;  
  //Statement st = null;
  PreparedStatement ps = null;
  try {
   
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/mydb201411.mdb";//这种方式不需要配置ODBC DSN
   //String url = "jdbc:odbc:mydb201411";  //这种url也能访问,但是,需要配置 ODBC DSN
   con = DriverManager.getConnection(url);
   String sql = "insert into matterlogs (id,htime,host,matters) values(?,?,?,?) ;"; 
   con.setAutoCommit(false);
   ps = con.prepareStatement(sql);
   for (int i = 0; i < 5; i++) {
    ps.setString(1, "15");
    ps.setString(3, "SP");
    ps.setString(2, DateFormat.getDateInstance().format(new Date(System.currentTimeMillis())));
    ps.setString(4, "get"+String.valueOf(i));
    ps.addBatch();
   }
   ps.executeBatch();
   con.commit();   
         
   
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally{   
   try {
    if( ps!=null ) ps.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
   try {
    if( !con.isClosed() ) con.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }   
  } 
  
 }
 
 public static void logquery_Excel(){


  Connection con = null;
  ResultSet rs = null;  
  Statement st = null;
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String url = "jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=e:/myexceldb201411.xls"; //这种方式不需要配置ODBC DSN
   //String url = "jdbc:odbc:myexceldb201411";   //这种url也能访问,但是,需要配置 ODBC DSN
   con = DriverManager.getConnection(url);
   String sql = "select * from [logsheet2$] where host='admin' ";   
   st = con.createStatement();
   rs = st.executeQuery(sql);
   while (rs.next()) {
    String s = "";
    s+= rs.getString(1)+",";
    s+= rs.getString(2)+",";
    s+= rs.getString(3)+",";
    s+= rs.getString(4)+",";    
    System.out.println(s);    
   }    
   
  } catch (ClassNotFoundException e) {   
   e.printStackTrace();
  } catch (SQLException e) {   
   e.printStackTrace();
  } finally{   
   try {
    if( rs!=null )   rs.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }
   try {
    if( st!=null ) st.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }
   try {
    if( !con.isClosed() ) con.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }   
  }  
 
 }
 
 public static void logsinsert_Excel(){
  
  Connection con = null;   
  Statement st = null;
  try {
   
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   String url = "jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=e:/myexceldb201411.xls;ReadOnly=0";//这种方式不需要配置ODBC DSN   
   con = DriverManager.getConnection(url);
   String sql = "insert into [logsheet2$] (id,htime,host,matters) values('22','2014-12-12 01:02:03','admin','logoff') ;"; 
   st = con.createStatement();
   st.executeUpdate(sql);         
   
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally{   
   try {
    if( st!=null ) st.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
   try {
    if( !con.isClosed() ) con.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }   
  } 
  
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值