【问题标题】:Invalid Column Index无效的列索引
【发布时间】:2016-05-01 03:01:25
【问题描述】:

以下是我的部分代码。我的数据库部分不断出现错误。我已经在多个地方查找了它们,但似乎找不到答案。有什么建议?代码和打印为错误的内容如下所示!

public void deleteEmployee()
{
    String sqlQuery;
    sqlQuery = "DELETE FROM JAVAUSER.EMPLOYEE";
    System.out.println(sqlQuery);
    sendDBCommand(sqlQuery);    
}

public void deleteAccident()
{
    String sqlQuery;
    sqlQuery = "DELETE FROM JAVAUSER.ACCIDENT";
    System.out.println(sqlQuery);
    sendDBCommand(sqlQuery);
} 

public void deleteTruck()
{
    String sqlQuery;
    sqlQuery = "DELETE FROM JAVAUSER.TRUCK";
    System.out.println(sqlQuery);
    sendDBCommand(sqlQuery);
}

public void deleteHomeState()
{
    String sqlQuery;
    sqlQuery = "DELETE FROM JAVAUSER.HOMESTATE";
    System.out.println(sqlQuery);
    sendDBCommand(sqlQuery);
}

public void deleteCountry()
{
    String sqlQuery;
    sqlQuery = "DELETE FROM JAVAUSER.COUNTRY";
    System.out.println(sqlQuery);
    sendDBCommand(sqlQuery);
}

以下是不断弹出的错误:

run:
DELETE FROM JAVAUSER.HOMESTATE
java.sql.SQLException: ORA-01002: fetch out of sequence

DELETE FROM JAVAUSER.COUNTRY
java.sql.SQLException: ORA-01002: fetch out of sequence

DELETE FROM JAVAUSER.TRUCK
java.sql.SQLException: ORA-01002: fetch out of sequence

DELETE FROM JAVAUSER.ACCIDENT
java.sql.SQLException: ORA-01002: fetch out of sequence

DELETE FROM JAVAUSER.EMPLOYEE
java.sql.SQLException: ORA-01002: fetch out of sequence

另外,当我的程序按下“插入按钮”时,我会按顺序调用所有删除方法

我怎样才能摆脱这些错误消息?

这是我的 sendDBCommand:

public static void sendDBCommand(String sqlQuery)
{
    String jdbcConnectionURL = "jdbc:oracle:thin:@localhost:1521:XE";
    String userID = "javauser";
    String userPASS = "javapass";

    try
    {
        Connection conn = getDBConnection(jdbcConnectionURL, userID, userPASS);
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
                ResultSet.CONCUR_READ_ONLY);
        rset = stmt.executeQuery(sqlQuery);

        int traverse = 0;
        while (rset.next())
        {
            System.out.println(rset.getString(1) + " " + rset.getString(2));
        }
    }
    catch (SQLException e)
    {
        System.out.println(e.toString());
    }
} 

【问题讨论】:

  • 好吧,我们不知道“sendDBCommand”到底是做什么的,谁知道呢?为什么要列出所有这些不同的数据库?
  • 我刚刚添加了 sendDBCommand!对于我们的程序,我们必须在每次按下“插入按钮”时清空所有表,然后重新填充它们。 HOMESTATE、COUNTRY 和 TRUCK 已预先填充
  • 您还需要向我们展示sendDBCommand(sqlQuery); 代码,因为此方法中的某个位置会抛出异常。
  • DELETE FROM JAVAUSER.ACCIDENT 命令不返回任何结果集,但您正尝试使用 sendDBCommand(,,,) 方法从该命令获取结果,使用 rset.getString(1)
  • 那我该如何解决呢?我有点明白你在说什么,但我还没有完全同意。

标签: java mysql sql-server oracle jdbc


【解决方案1】:

你应该包括一个计数器并打印结果,所以也许你应该有一个线索,而且,删除没有结果集,它应该是 executeUpdate 代替。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2021-08-26
    相关资源
    最近更新 更多