public static void addRecord() throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "manager");

String sql = "insert into sys.tbl_user values(?,?,?,?)";

PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "3");
pstmt.setString(2, "3");
pstmt.setString(3,"3");
pstmt.setInt(4, 3);

pstmt.executeUpdate(); 这是第18行
pstmt.close();

conn.close();
}
这是用JDBC往数据库里写数据,可老报表不存的错误
Exception in thread "main" java.sql.SQLException: ORA-00942: 表或视图不存在 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:862)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1846)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1771)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2361)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:422)
at JdbcTest.addRecord(JdbcTest.java:18)
at JdbcTest.main(JdbcTest.java:50)
但我在SQL Puls 用同样的SQL语句写数据,就能写进去 

解决方案 »

  1.   

    sys.tbl_user........直接往系统表插数据?
      

  2.   

    表是我自个创建的
    字段ID,name,pwd,type创建时没写表空间,直接创建到SYS里去了crrate table tbl_user(
      id.........,
      name ......,
      pwd ......,
      type .....
    );
      

  3.   

    用JDBC能读到数据
    public static void queryRecord() throws Exception{
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "manager");

    String sql = "select * from sys.tbl_user";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
    while(rs.next()){
    String id = rs.getString("id");
    String name = rs.getString("name");
    String pwd = rs.getString("pwd");
    int type = rs.getInt("type");

    System.out.println                       ("id="+id+",name="+name+",pwd="+pwd+",type="+type);

    }
    pstmt.close();
    rs.close();
    conn.close();
      

  4.   

    我估计你的用户在系统表空间只有读的权限 
    你给你的用户分配一个DBA权限 然后在user表空间重新建个表 再试试