如题
ps:该主键不是序列,只是一般的自增列
ps:该主键不是序列,只是一般的自增列
解决方案 »
- appstore 应用
- 基础部分,关于cookie
- java 线程安全问题
- WML里sendreferer="true",HTTP头部是不是都会带上referer??
- 人生!!!!
- LOMBOZ里怎么样设置在运行JSP,SERVLET时,TOMCAT也同时运行并显示
- 上传图片到Oracle的BLOB字段中的问题
- 菜鸟求助,为什么我用dreamwaver MX做完的网页,在IE中显示字体和行与行的间距,都产生了变化。
- 如何把一个word文件存到CLOB里,然后再把它从CLOB里取出来存成word文件啊?
- 在weblogic7.0中,如何将用domain configure wizard生成的user-project删除掉??
- JAVA POI还有JXLS报表系统怎么能够横向填充EXCEL表格
- 关于短息拨测
public String insert(Entity entity) {
String mainKey = "";
try {
getHibernateTemplate().save(entity);
mainKey = entity.getMainKey();
}catch(Exception ex) {
ex.printStackTrace();
}finally {
getHibernateTemplate.flush();
getHibernateTemplate.close();
}
return mainKey;
}
应该可行的吧,呵呵
估计你很少写JDBC 现在很多人会用点ssh,但不会写jdbc
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;try {
con= OracleConnectionFactory.getConnection();
DatabaseMetaData dmd= con.getMetaData();
System.out.println("database product name:"+ dmd.getDatabaseProductName());
System.out.println("database product version:"+ dmd.getDatabaseProductVersion());
System.out.println("supports generate keys?"+ dmd.supportsGetGeneratedKeys());
String sql="INSERT INTO t_mt_stat (id, mt_time, stat, stat_time)"+"VALUES (s_mt_stat.nextval, ?, ?, ?)";
ps= con.prepareStatement(sql,new String[]{"ID"});// 后面一个参数表示需要返回的列
ps.setTimestamp(1,new Timestamp(System.currentTimeMillis()));
ps.setString(2,"Y");
ps.setTimestamp(3,new Timestamp(System.currentTimeMillis()));
ps.executeUpdate();if(dmd.supportsGetGeneratedKeys()) {
rs= ps.getGeneratedKeys();while(rs.next()) {// 如果使用 rs.getInt("ID") 会报错,奇怪的 Oracle JDBC 驱动! System.out.println("ID:"+ rs.getInt(1));
}
}
}catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.close(rs, ps, con);
}
}
}
这个给你参考一下
你要实现列的自增只能通过java代码自己实现,在这个过程中可以保存主键,也没必要在插入数据的时候再返回主键了。
stmt = con.createStatement();
stmt.execute(sql);
rs = stmt.getGeneratedKeys();
int key = 0;
if (rs.next()) {
key = rs.getInt(1);
}
return key;//此处的key即为楼主想要的东西
select myseq.nextval from dual;然后再把这个值当成主键值插入数据表:
insert into mytable (id, ...) values (id_val, ...)
不是楼主是怎么做到的
JDBC实现就是这个样子的 希望LZ出面解释ORACLE自增是咋回事..
正是因为JDBC写够了 才那样做的
我用了存储过程,如下:create or replace procedure getid(v_sql in varchar , v_id out varchar)
as begin execute immediate v_sql
returning into v_id;
end;
sql语句例子:insert into test(id,name)values(13,'jimmy') returning id into :1
java程序里调用这个存储过程,传入sql语句,取得返回值v_id;希望对碰到类似问题的朋友们有帮助。
insert into mytable (id, ...) values (myseq.nextval, ...)
利用Statement.getGeneratedKeys得到主键ID