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);

不知道这么说明白了么?不明白可以再问。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-11
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是数值类型。本回答被网友采纳
第2个回答  2013-09-05
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 这样下 应该没有问题,写的不标准见谅。
第3个回答  2013-09-05
首先,你的test表中是否只有一个id字段?如果不是,那是因为你的SQL写错了。

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

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

最后还需要注意一下,关闭连接的时候除了要关闭PreparedStatement还需要关闭Connection。
第4个回答  2013-09-05
你inset语句you问题
PreparedStatement 为什么不用占位符呢

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

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网