使用oracle数据库中的关键字sequence来实现目的。
//创建mySeq
create sequence mySeq
start with 1
increment by 2
maxvalue 40
minvalue 1
cycle
//创建用户表
create table USER
(
Id int,
CompName varchar2(20)
)
插入语句可以这样写:
insert into USER values(mySeq.nextVal,'AA')
这样的话每次插入的ID就是自动递增的
扩展资料:
sequence用法:
create sequence <序列名称>
start with <起始数>
increment by <增长量>
[maxvalue 值]
[minvalue 值]
[cycle 当到达最大值的时候,将继续从头开始]
[Nocycle -- 一直累加,不循环]
[Cache ]
参考资料:百度百科-oraclesequence
首先要理解一下PreparedStatement,是具有预编译功能的,也就是说他会先编译成一个固定的格式,然后后面设置的就不需要再一次编译,节省了编译过程,建议看一下PreparedStatement这个类的详细说明。
你这个sql明显是错的。
String rsIns = "insert into test values (id)"
这个建议把sql写完整,这样就不会乱,也不会错。
比如只想插入id那么要把id声明一下,如果不写那就默认要插入所有的字段,你这里就没有生命,然后只插入id,肯定是错的。
正确写法一
String rsIns = "insert into test(id) values (“+id+”)"
try {
PreparedStatement p = conn.prepareStatement(rsIns)
p.excuteUpdate(rsIns)
} catch (Exception e) {
// TODO: handle exception
/ 释放资源 *** 作
}
写法二
String rsIns = "insert into test(id) values (?)"
try {
PreparedStatement p = conn.prepareStatement(rsIns)
p.setInt(1, id)
p.excuteUpdate(rsIns)
} catch (Exception e) {
// TODO: handle exception
// 释放资源 *** 作
}
PS:
setInt和setString方法里边的参数具体都是什么意思?
这里只有第二中需要setInt或者setXXX *** 作。具体的意思就是比如
p.setInt(1, id)
第一个参数是顺序号,也就是第几个问号。这里的sql
String rsIns = "insert into test(id) values (?)"
只有一个问号,那么序号就是1,第二个参数就是这个问号的值,比如这个sql中的问号其实就是要传的id
又比如String sql = "insert into user(id, name) values (?,?)"
这里要设置的话
第一个问号代表的是id,而且是int类型的那么就有
p.setInt(1,id)
第二个问号代表的是name,而且是String类型的那么就有
p.setString(2,name)
不知道这么说明白了么?不明白可以再问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)