是不是我使用的连接有问题?另外:我的是RESIN+WIN2000

解决方案 »

  1.   

    Statement查询后的数据根本就不对不对是指什么?
      

  2.   

    例如:
    select ADM from ATABLE union select ADM from BTABLE union select ADM from CTABEL我在ACCESS中查询到的是2条数据可在JSP中
       ResultSet rs=stmt.executeQuery("select ADM from ATABLE union select ADM from BTABLE union select ADM from CTABEL
    ");if(rs.last())
       System.out.println("---" + rs.getRow() + "---");
    ---结果---
    ---1---
    不能理解
      

  3.   

    还是在语句上找
    select count(name) from atable where atable.a not int(select 子句)
      

  4.   

    我发现把SQL语句反过来写就可以在JSP中得到2条数据例:把上面的SQL语句改为这样的
    select ADM from BTABLE union select ADM from CTABLE union select ADM from ATABEL我就可以得到2条数据。注:ATABLE表在数据库中有1条数据
        BTABLE表在数据库中有2条数据
        CTABLE表在数据库中有2条数据
      

  5.   

    yyqllxh2004(潇一郎)我也想这样啊。可是一使用这样的SQL语句就抛出异常。说是FROM子句错误。但这样的语句我在ACCESS中查询却通过。一切OK???这是为什么?
      

  6.   

    好奇怪啊。我明明用的是java.sql.ResultSet可是连接了ACCESS后就变成sun.jdbc.odbc.JdbcOdbcResultSet
      

  7.   

    BillyW(阿弥陀佛)堆栈追到最后都是/* compiled code */ 
        public void updateRef(int i, Ref ref) throws SQLException { /* compiled code */ }    public ResultSetMetaData getMetaData() throws SQLException { /* compiled code */ }    public SQLWarning getWarnings() throws SQLException { /* compiled code */ }    public void setWarning(SQLWarning sqlWarning) throws SQLException { /* compiled code */ }
      

  8.   

    我也正要问一个有关问题,为什么我写同样的语句
                String strUrl="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileName;
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");编译器报错:
    conn.java:12: unreported exception java.lang.ClassNotFoundException; must be cau
    ght or declared to be thrown
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                         ^
    这是怎么回事?
      

  9.   

    哎。JSP连接其他数据库都没这么多问题。可以连了ACCESS后怎么总是一大堆问题????
      

  10.   

    whoopee(帅得惊动了党)must be caught or declared to be thrown你是没有使用TRY语句。可能你是把这句话封装到函数或类里面了。使用TRY语句catch ClassNotFoundException这个异常就可以了。你这是编译错误
      

  11.   

    lianeng(★★★★★) 我想应该是,但我真不想是,如果是的话,我就绝望了。
      

  12.   

    据我感觉可能是旧版驱动不兼容新版驱动的写法DRIVER这种写法已经很老套了。PROVIDER是嵌入式的快速连接,可我找不到怎么用PROVIDER啊。我想是连接的方式问题
      

  13.   

    lhzongji(踪迹) 
    看看我的源代码:
    import java.sql.*;
    import java.lang.*;
    public class conn
    {
    public static void main(String[] args){
    Connection con; try{

    String connStr = "jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};dbq=test.mdb";
    //try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //}
    //catch(Exception e){
    // System.err.println(e);
    //}
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con = DriverManager.getConnection(connStr);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("select * from User");
    //rs.last();
    int intRowCount = rs.getRow();
    System.out.println(intRowCount);
    }
    catch(SQLException e){
    System.err.println(e.getMessage());
    } //stmt.close();
    //con.close();
    }
    }
    我觉得没有问题呀?
    但是就是在class那里报错呀!
      

  14.   

    晕倒,我给你说过了。如果在类或者函数中就必须CATCH。这是JAVA的规范。当然编译错误了。 try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(Exception e){
    System.err.println(e);
    }
    在这里你必须捕捉异常。否者根本就编译不过去。
      

  15.   

    lhzongji(踪迹) 我按你说的做了,改成
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(Exception e){
    System.err.println(e);
    }
    这样了,编译是通过了,但是java后出现错误:
    [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序怎么回事?
      

  16.   

    这里改成如下:
    String connStr = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=test.mdb";
      

  17.   

    在rs.getRow();这句之前添加一句rs.next();
      

  18.   

    同上,呵呵,必须先调用一次rs.next
      

  19.   

    是数据库连接的问题拉
    "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
    你在driverName这里加上双引号就表示他是一个字符串了,怎么还可以在里边进行运算!
    你可以先在ODBC里为数据源设一个名字,到时候再用jdbc:odbc桥后边直接加上就可以了!!
      

  20.   

    access是单进程得吧,根据pv操作原理,你得严格控制好关闭和链接
      

  21.   

    to zhushizu(从来就没有救世祖) 我就是想免odbc数据源!****************************************
    to lhzongji(踪迹)你编译的时候有没有这个问题呀?
      

  22.   

    "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=test.mdb"问题不在Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");那里,Class.forName是一定要try的,这个是对的,你的错误信息是 
    [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序说明没找到数据库文件,你要确认你的数据库文件在当前目录下面,并且文件名大小写和你程序里面指定的完全一致。
      

  23.   

    import java.sql.*;
    import java.lang.*;
    public class conn
    {
    public static void main(String[] args){
    Connection con; try{

    String connStr = "jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};dbq=test.mdb"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(connStr);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("select * from User");
    //rs.last();
    int intRowCount = rs.getRow();
    System.out.println(intRowCount);
    }catch(ClassNotFoundException e){
                      System.err.println(e.getMessage());
             }catch(SQLException e){
    System.err.println(e.getMessage());
    } //stmt.close();
    //con.close();
        }
    }
      

  24.   

    [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序 意思是没有找到mdb文件,如果你的mdb文件和jsp在一个目录下面,不能保证你的java程序会按照这个路径去寻找这个文件,
    你应该先 File f = new File("test.mdb");
    String connStr = "jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};dbq="+f.getAbsolutePath();
      

  25.   

    zhushizu(从来就没有救世祖) 我这个是客户端上传来的数据库文件,每个文件名都不固定。怎么建ODBC?
      

  26.   

    调用rs.next()后再调用rs.last()还是一样。得到的结果集行数为1。同样的SQL语句,去了ACCESS中直接查询得到的确是5