java oracle 的插入语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java oracle 的插入语句相关的知识,希望对你有一定的参考价值。

conn....
...
...

String rsIns = "insert into test values (id)";
PreparedStatement p = conn.prepareStatement(rsIns);
try
int id = 0;
String name = "";
int grade = 0;
p.setInt(1,id);
// p.setString('name', name);
// p.setInt(grade, grade);
p.close();
catch (Exception e)
// TODO: handle exception

...
...
其它没用的代码就不写了,连接是能建立的,因为SLE语句一切正常,为什么这个INS语句甚至就连一个主键就都插入不了?setInt和setString方法里边的参数具体都是什么意思?网上找了好多,都是这个格式,一个数据跟个字段,那我准备传入数据库的值写在那?求指点,谢谢

首先要理解一下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);

不知道这么说明白了么?不明白可以再问。
参考技术A oracle的插入命令为”insert“。
语法:insert into tablename (字段1、字段2...) values(值1,值2...)。
解释:插入tablename表“字段1”的值为“值1”,“字段2”的值为”值2“。其中插入的字段类型和后面的值类型必须保持一致。
sql:insert into tablename (name、id) values(‘zhangsan’,11)。本sql中说明name字段是字符串类型,id是数值类型。
参考技术B String sql = insert into tset(id,name) values(?,?)

PreparedStatement ps = con.prepareStatement(sql); 编译sql

ps.setInt(1, id的值);
ps.setString(2, name的值);

int count = ps.executeUpdate();
System.out.println(count );

看打印出来的值 就oK 这样下 应该没有问题,写的不标准见谅。
参考技术C 首先,你的test表中是否只有一个id字段?如果不是,那是因为你的SQL写错了。

我建议你把SQL改成insert into test(id) values (?)。

然后,你没有执行SQL,在PreparedStatement 设置值后还需要使用PreparedStatement的executeUpdate()方法去执行SQL语句。

最后还需要注意一下,关闭连接的时候除了要关闭PreparedStatement还需要关闭Connection。
参考技术D 你inset语句you问题
PreparedStatement 为什么不用占位符呢

"insert into test (id,name,grade) values (?,?,?)"

然后下面就是你的赋值啊
还有就是执行语句 你都没执行executeUpdate(),怎么能you值呢

以上是关于java oracle 的插入语句的主要内容,如果未能解决你的问题,请参考以下文章

Java中写插入语句向数据库中的表插入??

在Oracle中,通过一个INSERT ALL语句批量插入数据

oracle用sql 语句如何向表中插入时间?

请教oracle高手 在oracle里怎么样用一个插入语句插入两表里的数据

如何使用一个插入语句将多行插入到 oracle 数据库中? [复制]

Oracle PL/SQL - 由其他团队调用的用于插入数据的过程。正在从 Java 调用过程