0

バッチモードでSQLステートメントを処理することになっているコードの実行中にこのエラーが発生します:

ORA-03115:サポートされていないネットワークのデータ型または表現

これは、実行時にエラーを生成するコードです。

public class Login {

    public static void main(String args[]) throws SQLException {
        Connection con = null;
        PreparedStatement stmt = null;
        Statement st = null;
        try {
            Driver driver = new oracle.jdbc.driver.OracleDriver();
            DriverManager.registerDriver(driver);
            System.out.println("coneecting to the database:");
            con = DriverManager.getConnection("url", "user", "pass");
            con.setAutoCommit(false);
            System.out.println("creating statement");
            String sql = "insert into shweta values(?,?)";
            stmt = con.prepareStatement(sql);

            printrows(stmt);

            stmt.setString(1, "love");
            stmt.setInt(2, 45);
            stmt.addBatch();

            stmt.setString(1, "kaun");
            stmt.setInt(2, 29);
            stmt.addBatch();

            int count[] = st.executeBatch();

            con.commit();

            printrows(stmt);

            // printRs(rs);

            st.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                if (con != null)
                    con.rollback();
            } catch (SQLException en) {
                en.printStackTrace();
            }
        }

        catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null)
                    stmt.close();
            } catch (Exception e) {
            }
            try {
                if (con != null)
                    con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        System.out.println("good bye ashish");
    }

    public static void printrows(Statement stmt) throws SQLException {
        String sql = "select * from shweta";
        ResultSet rs = stmt.executeQuery(sql);

        while (rs.next()) {
            // Retrieve by column name

            int age = rs.getInt("age");
            String first = rs.getString("auth");

            System.out.print(", Age :    " + age + "\n");
            System.out.print("AUTH :     " + first + "\n");

        }
        System.out.println();
    }
}

私はコーディングに不慣れで、このエラーを解決する方法がわかりません。すべての助けに感謝します。ありがとう。

4

3 に答える 3

0

コードが例外をスローする原因となっている問題を見つけました。理由は
、ステートメントをステートメントst = con.createstatement();として初期化していないためです。コンパイラがエラーをスローしているため、クエリを実行するためのパラメータとして直接準備されたステートメントオブジェクトを渡すことはできません。したがって、ステートメントを使用して、printrowsのパラメータへの参照を渡す必要があります。

于 2013-03-12T18:35:06.373 に答える
0

ステートメント st は初期化されておらず、executeBatch で使用されています。挿入に使用されるステートメント stmt は、printrows 内で別の SQL を実行するために変更しないでください。

于 2013-03-12T07:16:27.387 に答える
0

ユーザーのバインドまたは定義、または Oracle 関数は、この異種 SQL*Net 接続ではサポートされていません。古いバージョンの Oracle をアップグレードして、再試行してください。

于 2013-03-11T19:22:16.327 に答える