我写了个servlet,往oracle数据库表里插入记录。现在有个问题,就是在我要插入记录的那个表里有个intger类型的ID字段,这个字段的功能就是每插入一条记录就自动增长1. 而我在servelet中往表里插入记录时又不可能每次为了这个ID值每次修改insert语句。我知道oracle中的序列就是这个自动增长的功能,但那个我只会在数据库中使用,而在servlet根本就不知道怎么创建这个序列,要是可以跟在servlet中使用insert语句那样就好了!!请高手不吝赐教!!!!
这是我的insert语句:
String sql = "insert into blog(id,title,content,category_id,created_time)values (4,?,?,?,sysdate)";说了这么多,我的重点就是怎样在servlet中使得那个ID字段的值能够自动增长!再次请高手赐教!!!
这是我的insert语句:
String sql = "insert into blog(id,title,content,category_id,created_time)values (4,?,?,?,sysdate)";说了这么多,我的重点就是怎样在servlet中使得那个ID字段的值能够自动增长!再次请高手赐教!!!
CREATE SEQUENCE SEQ_EMP
MINVALUE 1
MAXVALUE 99999999
START WITH 1
INCREMENT BY 1
NOCACHE;这么调用
String sql = "insert into blog(id,title,content,category_id,created_time)values (SEQ_EMP.NEXTVAL,?,?,?,sysdate)";
2 如果你不关心里面的值是几。 使用1楼的方法,直接插入就行了。
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;public class OracleTest { public static void main(String[] args) {
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);
}
}
}