为什么SQLException:[Microsoft] [ODBC SQL Server驱动程序]无效的描述符索引和toString

时间:2014-01-12 19:48:30

标签: sql sql-server user-input sqlexception jdbc-odbc

我有以下程序,用户必须在其中提供订单代码,以获取客户及其订单的数据。我在名为Catalog的数据库中创建了一个视图,其中包含了所需的所有数据。但是当我运行我的程序时,我收到以下错误SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index。是因为观点吗?或者我的代码有问题?另外我想知道rs.toString();是否是打印结果的正确功能。

public class Orders {
    public static void main(String[] args) {

        int order_code;
        int cust_code;
        int quantity;
        double price;
        String name;

        Scanner input = new Scanner (System.in);   
        System.out.print("Please insert order code: ");  
        order_codej = input.nextInt();  
        String url = "jdbc:odbc:orders";  
        Connection dbcon;  
        Statement stmt;  
        ResultSet rs;

        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } 
        catch(java.lang.ClassNotFoundException e) {
            System.out.print("ClassNotFoundException: ");
            System.out.println(e.getMessage());
        }
        try {
            dbcon = DriverManager.getConnection(url,"mybase", "mycode");
            stmt = dbcon.createStatement();
            rs = stmt.executeQuery("SELECT * FROM Catalog WHERE o_code="+order_code);
            while (rs.next()) {
                order_code = rs.getInt("o_code");
                cust_code = rs.getInt("cust_code");
                quantity = rs.getInt("quantity");
                price = rs.getFloat("price");
                name = rs.getString("name");
            }
            rs.toString();
            rs.close();
            stmt.close();
            dbcon.close();
        } 
        catch(SQLException e:) {
            System.out.print("SQLException: "); 
            System.out.println(e.getMessage());  
        }
    }
}

提前致谢!

1 个答案:

答案 0 :(得分:2)

听起来“o_code”,“cust_code”,“quantity”或“price”在您的视图中没有正确别名,或者至少在结果集中没有包含它们(列没有正确别名)。

此外,如果您提供了更多信息,那将更有帮助...就像您的视图的结构(列类型,名称等)然后我们可以更清楚地了解正在发生的事情。