oracle数据库,主键设置为ID,插入语句时,如何自动生成ID并让它顺序增加呢

oracle数据库,主键设置为ID,插入语句时,如何自动生成ID并让它顺序增加呢,第1张

使用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)

不知道这么说明白了么?不明白可以再问。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/10966692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存