大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先要理解一下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);
不知道这么说明白了么?不明白可以再问。
使用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
insert into tonglu.tb_putoutconfirm(transfer_type,package_num,handledby,username,tms_service_code,batch,weight)values(?,?,?,?,?,tonglu.batch_seq.nextval,?);
按位置对应一下,batch在段在倒数第二位,所以那个地方直接引用序列
其他你该怎么传参数还怎么传参数