CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

Java 直接连接access 问题

楼主ltp4(没心二少)2004-09-02 17:45:05 在 Java / Web 开发 提问

网络上找的例子程序,稍做修改。但结果出不来。  
  请各位达人帮下忙。  
   
  <%@page         import="java.sql.*"          
  import         ="java.util.*"          
  import         ="java.io.*"          
  import="java.text.*"          
  contentType="text/html"          
  buffer="20kb"          
  %>  
  <%!          
  int   all,i,m_count;          
  String   odbcQuery;          
  Connection   odbcconn;          
  Statement   odbcstmt;          
  ResultSet   odbcrs;          
  String   username,title,content,work,email,url,time,date;          
  String   datetime;          
  %>          
  <%          
  try{          
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");          
  }  
  catch(ClassNotFoundException   e){  
  out.print("NULL");          
  }      
   
            try{          
  odbcconn   =   DriverManager.getConnection("jdbc:odbc:driver={Microsoft   Access   Driver(*.mdb)};DBQ=C:\\timesheet\\data\\timesheet.mdb");          
  odbcstmt   =   odbcconn.createStatement();                                                  
  odbcQuery="Select   *   From   M_Country   ";          
  odbcrs=odbcstmt.executeQuery(odbcQuery);      
  odbcrs.close();          
  odbcstmt.close();          
  odbcconn.close();  
  out.print("OK");          
  }  
  catch(SQLException   e){  
  out.print(e);          
  }    
  %> 问题点数:100、回复次数:20Top

1 楼ltp4(没心二少)回复于 2004-09-02 17:46:14 得分 0

调了一下午,只好求助各位了。Top

2 楼jimsons(路漫漫其修远兮)回复于 2004-09-02 17:53:28 得分 10

代码如下:  
  <%  
  Connection   con;  
  Statement   sql;  
  ResultSet   rs;  
  try  
  {  
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();  
  }catch(ClassNotFoundException   e){out.print(e.getMessage());}  
  try  
  {  
  String   dbpath=request.getServletPath().substring(0,request.getServletPath().indexOf("/",1)+1);  
  if(dbpath.trim().equals(""))dbpath="/";  
  String   url="jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ="+application.getRealPath("")+dbpath+"puyou.mdb;";  
  con=DriverManager.getConnection(url,"","");  
  sql=con.createStatement();  
  out.print("yes<p>");  
  rs=sql.executeQuery("SELECT   *   FROM   star");  
   
  %>Top

3 楼szabo(阿波哥)回复于 2004-09-02 17:54:59 得分 5

DBQ=C:\\timesheet\\data\\timesheet.mdb  
   
  有问题!  
  将\\改为/试试。Top

4 楼wxt1013(每晚抱着Java睡觉......)回复于 2004-09-02 19:27:25 得分 10

给你一个连接Access的例子,你自己参考一下:  
   
  Connection   conn=null;  
  try{  
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
   
                conn=DriverManager.getConnection("jdbc:odbc:C:\\timesheet\\data\\timesheet.mdb","","");                                          
                 
                if(conn   ==   null){  
                          out.println("conn   is   null   !");  
                          return;  
                  }  
                Statement   state_ment=conn.createStatement();    
                ResultSet   rest=tbloperate.state_ment.executeQuery(SQL);  
                while(rest.next()){    
                        rest.getString("ShohinNm");    
                        rest.getString("ShohinKbn");  
              }                                          
  }catch(ClassNotFoundException   e){  
              out.println("\nSQLException--------------------");  
              out.println("ModelSQLState:"+e.getSQLState());  
  }    
  Top

5 楼wxt1013(每晚抱着Java睡觉......)回复于 2004-09-02 19:32:26 得分 25

conn=DriverManager.getConnection("jdbc:odbc:C:\\timesheet\\data\\timesheet.mdb","","");    
  上面这种连接经常会出错,连接不上,类似情况我也遇到.如果是这样,可以这样解决:  
  在你的ODBC数据源里面新建一个数据源:MyDatabase,让MyDatabase指向你的数据库:   C:\\timesheet\\data\\timesheet.mdb,然后将数据库连接语句改为:  
  conn=DriverManager.getConnection("jdbc:odbc:MyDatabase","","");  
  其他语句都不变,这样肯定不会再出错.  
   
  :)     祝成功!Top

6 楼ltp4(没心二少)回复于 2004-09-03 08:58:32 得分 0

先谢过各位,今天继续调试。Top

7 楼LittleLandlord(小地主)回复于 2004-09-03 09:12:46 得分 10

odbcconn   =   DriverManager.getConnection("jdbc:odbc:driver={Microsoft   Access   Driver(*.mdb)};DBQ=C:\\timesheet\\data\\timesheet.mdb");         这句少了用户名称和密码,应改为  
  DriverManager.getConnection("jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ=C:\\timesheet\\data\\timesheet.mdb","","");Top

8 楼Shires(Trombone)回复于 2004-09-03 09:17:51 得分 0

upTop

9 楼LittleLandlord(小地主)回复于 2004-09-03 09:25:58 得分 5

数据库连接应该没问题了,还有什么错误提示?Top

10 楼Pkoy(笑剑)回复于 2004-09-03 09:35:37 得分 0

LittleLandlord(小地主)   DriverManager.getConnection("jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ=C:\\timesheet\\data\\timesheet.mdb","","");  
          我做JDBC访问数据库时没有加过DBQ,如果加了DBQ=...以后,还需要配置ODBC吗?Top

11 楼ltp4(没心二少)回复于 2004-09-03 09:37:53 得分 0

直接连接access还是没成功,只好先用数据源的方法连接了。以后再试。  
  多谢各位,结帖了。Top

12 楼windust3313(蓝天)回复于 2004-09-03 09:39:36 得分 0

我看这上面连接的都是用绝对路径连Access,不知能不能用相对路径来连Top

13 楼LittleLandlord(小地主)回复于 2004-09-03 09:44:31 得分 5

加了DBQ就不用配置ODBC了,相对路径为DBQ=.\\data\example.mdb(表示当前应用程序目录下data下的MDB),另外DBQ=..\\表示当前应用程序目录上一级目录下Top

14 楼yupingping(平平)回复于 2004-09-03 09:44:32 得分 0

upTop

15 楼ltp4(没心二少)回复于 2004-09-03 09:45:39 得分 0

例子文章上特别说明只用于绝对路径。  
  Top

16 楼ltp4(没心二少)回复于 2004-09-03 09:52:03 得分 0

提示信息是:“java.sql.SQLException:   [Microsoft][ODBC   Driver   Manager]   ???   ????????????????????????????   ”  
   
  --奇怪了。Top

17 楼LittleLandlord(小地主)回复于 2004-09-03 10:04:02 得分 25

相对路径也可以,注意大小写问题,给你个例子:  
  public   class   DbFactory   {  
      public   DbFactory()   {  
      }  
   
      private   String   userName   =   "";  
      private   String   password   =   "";  
      private   String   driverName   =   "sun.jdbc.odbc.JdbcOdbcDriver";  
      String   url   =   "jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ=D:\\temp\\mss1.mdb";  
      private   java.sql.Connection   connection;  
      protected   ResultSet   resultSet   =   null;  
      protected   ResultSetMetaData   resultSetMetaData   =   null;  
      private   java.sql.Statement   statement=null;  
      /*  
        创建一个连接  
      */  
      private   Connection   getNewConnection()   {  
          try   {  
              this.connection.close();   //试图关闭连接  
          }  
          finally   {  
              this.connection   =   null;   //释放连接  
              try   {  
                  Class.forName(this.driverName);   //加载驱动程序  
                  try   {  
                      this.connection   =   DriverManager.getConnection(this.url,   this.userName,this.password);  
                  }  
                  catch   (SQLException   e)   {  
                      JOptionPane.showMessageDialog(null,   url);  
   
                          System.exit(0);  
                        throw   e;  
                  }  
              }  
              finally   {  
                  return   this.connection;   //返回新建立的连接  
              }  
          }  
      }  
      public   java.sql.Connection   getConnection()   {  
              if   (connection   !=   null)   {  
                  try   {  
                      if   (connection.isClosed())   {  
                          connection   =   null;  
                          getNewConnection();  
                      }  
                  }  
                  catch   (SQLException   ex)   {  
                  }  
              }  
              if   (connection   ==   null)   {   //没有设置连接则创建一个连接  
                  getNewConnection();  
              }  
              return   connection;  
          }  
  }Top

18 楼niyboy(I Love J2EE)回复于 2004-09-03 10:09:45 得分 5

该说的楼上的都已经说完了;  
   
  楼主你认真仔细检查一下;  
   
  Top

19 楼ltp4(没心二少)回复于 2004-09-03 10:13:50 得分 0

多谢各位了。还是先结帖,给分。Top

20 楼ltp4(没心二少)回复于 2004-09-06 11:13:56 得分 0

虽然已经结帖了,但还是要和大家说声抱歉。  
  以上测试不成功的原因是字符的全角半角所引起的。  
   
  测试通过的代码为:  
   
  <%@page   import="java.sql.*"   %>  
   
   
  <%!      
  Connection   odbcconn;          
  Statement   odbcstmt;          
  ResultSet   odbcrs;  
  String   odbcSQL;        
  %>  
   
  <%  
  try{          
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");          
  }  
  catch(ClassNotFoundException   e){  
  out.print("NULL");          
  }      
   
  try{    
  odbcconn   =   DriverManager.getConnection("jdbc:odbc:driver={Microsoft   Access   Driver   (*.mdb)};DBQ=D:\\tomcat401\\webapps\\timesheet\\data\\timesheet.mdb","","");    
    odbcstmt=odbcconn.createStatement();    
    odbcSQL="select   *   from   M_Country";  
            odbcrs=odbcstmt.executeQuery("select   *   from   M_Country");  
                while(odbcrs.next()){    
                        out.print(odbcrs.getString("CountryCode"));    
                        out.print(odbcrs.getString("CounttryName"));  
                        }  
                        odbcrs.close();  
                        odbcstmt.close();  
                        odbcconn.close();  
        out.print("OK");  
  }  
  catch(SQLException   e){  
  out.print(e);  
   
  }    
   
  %>Top

相关问题

  • java 与Access怎么连接?
  • 急!!jsp能直接连接access吗?
  • 问个java连接access的问题!
  • java如何连接access数据库呀
  • java连接oracle9.2.0.1.0
  • java直接连接oracle时,找不到驱动
  • 建立access连接的odbc和直接连接文件的方法?
  • VC中如何用ADO直接连接ACCESS数据库?
  • 请问如何用TDatabase直接连接Access库?
  • delphi用BDE怎么直接连接到ACCESS

关键词

  • 连接
  • 相对
  • 数据库
  • jdbc
  • access
  • 数据
  • microsoft
  • sql
  • null
  • timesheet

得分解答快速导航

  • 帖主:ltp4
  • jimsons
  • szabo
  • wxt1013
  • wxt1013
  • LittleLandlord
  • LittleLandlord
  • LittleLandlord
  • LittleLandlord
  • niyboy

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo