我在执行代码时遇到此错误,该代码应该以批处理模式处理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();
}
}
我是编码的新手,不确定如何解决此错误,所有帮助表示赞赏。感谢。
答案 0 :(得分:0)
此版本不支持用户绑定或定义或Oracle功能 异构SQL *网络连接。 升级旧版Oracle,然后重试。
答案 1 :(得分:0)
语句st未初始化 - 并在executeBatch中使用。用于插入的语句stmt不应更改为在printrows中运行另一个sql。
答案 2 :(得分:0)
我发现导致代码抛出异常的问题。原因是我是 将我的陈述初始化为Statement st = con.createstatement();由于哪个 编译器抛出错误。我们不能直接传递预处理语句对象作为参数来执行查询。所以我们如何使用语句并将其引用传递给printrows中的参数。