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();
uj5u.com熱心網友回復:
birthday 列的資料型別是DATE 嗎?uj5u.com熱心網友回復:
perseq.nextcal ? 序列值嗎?perseq.nextval
uj5u.com熱心網友回復:
樓中不知道怎么回復啊,回復@wmxcn2000,1L:資料庫關閉后下面是運行:請輸入生日:1994/4/03,這個是date 型別嗎?回復@jdsnhan,2L:VALUES中的perseq.nextcal是表示將輸入的內容傳遞到其中uj5u.com熱心網友回復:
perseq.nextcal應該是對應的pid值,看一下對不對uj5u.com熱心網友回復:
那就得看資料型別是否匹配,資料格式是否正確了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/110523.html
標籤:開發
