没有什么错误呀,不过我建议你在使用resultset是先要判断一下这个东东是不是null,如果是null那么int i=rs.getInt(1)一定出错

解决方案 »

  1.   

    kookoo说的非常对,在使用rs之前,必须rs.next()
      

  2.   

    to:kookoo
    多谢你的指教,现在这几句没错了下面一句怎么写呀?
    我的意思是先查一下当前有几条记录,之后把当前插入的记录用这个序号标识。
    错误提示:
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-00917: ???? 
    原语句:
    stmt.executeUpdate("INSERT INTO test (a,b) VALUES (int i,'2')");
      

  3.   

    我建议最好这样写:select count(*) as cnt from test
    给它个别名。int i=0;
    stmt.executeUpdate("INSERT INTO test (a,b) VALUES (i,'2')");
      

  4.   

    to:byfree
    这样不行。
    错误提示:
    java.sql.SQLException: ORA-00984: 列在此处不允许 
      

  5.   

    一样。
    SQL> desc test;
     名称                                      空?      类型
     ----------------------------------------- -------- -----------
     A                                                  NUMBER
     B                                                  CHAR(10)
    我的OICQ:50081811
    请各位高手多多指教。
      

  6.   

    <!--首先导入一些必要的packages-->
    <%@ page info="database handler"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%><!--告诉编译器使用SQL包--> 
    <%@ page import="java.sql.*"%><%@ page import="javax.servlet.*"%>
    <%@ page import="javax.servlet.http.*"%>
    <%@ page contentType="text/html;charset=gb2312" session="true"%><%
    //以try开始
    try
    {
    Connection con;
    Statement stmt;
    ResultSet rs;//加载驱动程序,下面的代码为加载JDBD-ODBC驱动程序
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//用适当的驱动程序连接到数据库,test"是系统dsn名
    String url="jdbc:oracle:thin:@192.168.0.89:1521:ora8";//String url="jdbc:odbc:test";//建立连接,类似于ASP中的创建数据库联接
    con=DriverManager.getConnection(url, "user1", "pass1");//创建一个JDBC声明
    stmt = con.createStatement();//增加新记录
    //stmt.executeUpdate("delete from  test");
    rs = stmt.executeQuery("select count(*) from test");
    rs.next();
    int i=rs.getInt(1);
    //stmt.executeUpdate("INSERT INTO test (a,b) VALUES (rs.getInt(1),'2')");
    stmt.executeUpdate("INSERT INTO test (a,b) VALUES (2,'345234')");//查询记录
    rs = stmt.executeQuery("SELECT a,b from test");//输出查询结果
    out.println("<table border=1 width=400>");
    while (rs.next())
    {
    String col1 = rs.getString(1);
    String col2 = rs.getString(2);
    //打印所显示的数据
    out.println("<tr><td>"+col1+"</td><td>"+col2+"</td></tr>");
    }
    out.println("</table>");
    }//如果加载时出错,给出相应的错误信息
    catch (Exception e) {out.print(e.toString());
    }
    %>
      

  7.   

    我先问一下你的int i=rs.getInt(1);能得到结果吗?
      

  8.   

    可能有问题的地方:
    1. 使用jdbc-odbc桥时,驱动器url应该用jdbc:odbc:test
       若url用jdbc:oracle:thin:@192.168.0.89:1521:ora8,对应的
       该用oracle的jdbc驱动:oracle.jdbc.driver.OracleDriver
    2. test是dsn名,之后的sql语句中的test是其中的一张表吗?
    你不会是一下子写了这么多,再调试后出错的吧,最好也写出加了哪些
    后出错。
      

  9.   

    to:byfree
    int i=rs.getint(1)
    的结果是i=表中的记录数。
    stmt.executeUpdate("INSERT INTO test (a,b) VALUES (rs.getInt(1),'2')");时出错。
    错误提示:
    java.sql.SQLException: ORA-00904: 无效列名 
    如果改成下面这样:
    stmt.executeUpdate("INSERT INTO test (a,b) VALUES (i'2')");时出错。
    错误提示:
    java.sql.SQLException: ORA-00984: 列在此处不允许 
      

  10.   

    stmt.executeUpdate("insert into test(a,b) values('" + rs.getInt(1) + "','2')"