Scanner input=new Scanner(System.in);
Connection conn=null;//表示数据库的连接对象
PreparedStatement pstmt=null;//表示数据库的更新操作
System.out.print("请输入名字:");
String name=input.next();
System.out.print("请输入年龄(年龄必须是数字):");
int age=input.nextInt();
System.out.print("请输入生日:");
Date date=new Date(input.next());
System.out.print("请输入工资:");
float salary=input.nextFloat();
String sql="INSERT INTO person(pid,name,age,birthday,salary) VALUES(perseq.nextcal,?,?,?,?)";
System.out.println(sql);
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt=conn.prepareStatement(sql);//使用预处理的方式创建对象
pstmt.setString(1, name);//第一个?号的内容
pstmt.setInt(2, age);//第二个?号的内容
pstmt.setDate(3,new java.sql.Date(date.getTime()));
pstmt.setFloat(4, salary);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
}
请输入名字:张三
请输入年龄(年龄必须是数字):23
请输入生日:1994/4/03
请输入工资:4000
INSERT INTO person(pid,name,age,birthday,salary) VALUES(perseq.nextcal,?,?,?,?)
Exception in thread "main" java.sql.SQLSyntaxErrorException: ORA-00984: 列在此处不允许 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at demo8.InsertDemo02.main(InsertDemo02.java:36)
36行是pstmt.executeUpdate();
Connection conn=null;//表示数据库的连接对象
PreparedStatement pstmt=null;//表示数据库的更新操作
System.out.print("请输入名字:");
String name=input.next();
System.out.print("请输入年龄(年龄必须是数字):");
int age=input.nextInt();
System.out.print("请输入生日:");
Date date=new Date(input.next());
System.out.print("请输入工资:");
float salary=input.nextFloat();
String sql="INSERT INTO person(pid,name,age,birthday,salary) VALUES(perseq.nextcal,?,?,?,?)";
System.out.println(sql);
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt=conn.prepareStatement(sql);//使用预处理的方式创建对象
pstmt.setString(1, name);//第一个?号的内容
pstmt.setInt(2, age);//第二个?号的内容
pstmt.setDate(3,new java.sql.Date(date.getTime()));
pstmt.setFloat(4, salary);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
}
请输入名字:张三
请输入年龄(年龄必须是数字):23
请输入生日:1994/4/03
请输入工资:4000
INSERT INTO person(pid,name,age,birthday,salary) VALUES(perseq.nextcal,?,?,?,?)
Exception in thread "main" java.sql.SQLSyntaxErrorException: ORA-00984: 列在此处不允许 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at demo8.InsertDemo02.main(InsertDemo02.java:36)
36行是pstmt.executeUpdate();
解决方案 »
- 关于权限和角色的问题
- 请问哪位有oracle函数库的帮助文档呀.chm格式的
- oracle Date类型Insert 一个类似于0000/00/00的非法日期
- Proc 调用.pc文件时,如何传入argv参数?
- 创建数据库失败 配置EM问题
- Oracle 8i 是否无法在单机上安装?
- 请问各位一下:怎么调试带 OUT 参数的存储过程?
- 数据迁移:从SQL Server到Oracle
- 对oracle基本操作!详情请看.....
- 卸载oracle8.1.6的时候发生内存不能读,请教??
- oracle 触发器 的 使用
- 启用TDE后,设置wallet后,仍然无法创建加密表空间,oracle真难用.......
perseq.nextval