在于在不做ODBC数据源的情况下让JSP访问Access数据库(代码如下)
<%@page contentType="text/html;charset=gb2312"%> 
<%@page import="java.sql.*"%> 
<html> 
<body> 
<% 
try{ 
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

catch(ClassNotFoundException e){ 
  out.print(e); 

try{ 
  String strDirPath=application.getRealPath(request.getRequestURI()); 
  strDirPath=strDirPath.substring(0,strDirPath.lastIndexOf('\\'))+"\\"; 
  String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+strDirPath+"jcc.mdb"; 
  Connection conn = DriverManager.getConnection(url); 
  Statement stmt = conn.createStatement(); 
  ResultSet rs = stmt.executeQuery("SELECT * FROM user"); 
  out.println("User-list"+"<br>"); 
  while(rs.next()){ 
    out.print(rs.getString(1)+" "); 
    out.print(rs.getString(2)+"<br>"); 
  } 
  rs.close(); 
  stmt.close(); 
  conn.close(); 

catch(Exception ex){ 
  out.print(ex); 

%> 
</body> 
</html> 
其中String strDirPath=application.getRealPath(request.getRequestURI());是不是确定数据库的路径的呢?是不是数据库一定要在ROOT下 ?希望详细的解释,不胜感激!

解决方案 »

  1.   

    没有做过
    只做过jdbcodbc桥
      

  2.   

    建立个数据源
    try{
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(ClassNotFoundException e)
    {
    }
    try
    {
    Connection con=DriverManager.getConnection("jdbc:odbc:数据源名称");
    Statement sql=con.createStatement();
    .....................
    }
    catch(SQLException e)
    {
    }
      

  3.   

    数据库不一定要在ROOT下的,你把application.getRealPath(request.getRequestURI());换成application.getRealPath("/")取到绝对路径后,再通过indexOf、subString等手段去重新组合,拼成你的数据库所在的路径,试一下!
      

  4.   

    楼主,上面的程序有问题:
      String strDirPath=application.getRealPath(request.getRequestURI()); 
    正确的应该这样写:String strDirPath=application.getRealPath(request.getServletPath());对于:
    String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+strDirPath+"jcc.mdb"; 
    strDirPath:只要能指明你数据库所在的绝对路径就ok拉,和其他的无关