用jdbc getGenerationKey属性
================================
public static void main(String args[]) {
String sql="insert into cdml_sensky_user(uuid,version) values('123','123456789')";
int rows = -1;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager
.getConnection("jdbc:oracle:thin:@ip:1521:dbname","username","pwd"); //连接数据库
conn.setAutoCommit(false); //不自动提交
// Connection conn =pool.getConnection();
PreparedStatement pstat =conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
//创建一个默认 PreparedStatement 对象,该对象能获取自动生成的键,适合insert语句
//(该语句能自动生成键值)autoGeneratedKeys - 指示是否应该返回自动生成的键的标志
//它是 Statement.RETURN_GENERATED_KEYS 或 Statement.NO_GENERATED_KEYS 之一
Statement stat = conn.createStatement();
// pstat.setInt(1, -1);
// pstat.setString(2,title);
// pstat.setString(3,content);
pstat.executeUpdate();
ResultSet rsKey = pstat.getGeneratedKeys(); //ResultSet 指示键值
rsKey.next();
int key = rsKey.getInt(1); //得到第一个键值
rsKey.close();
stat.executeUpdate("update cdml_sensky_user set uuid = " + key + " where id = " + key);
conn.commit();
conn.setAutoCommit(true); //设回自动提交
pstat.close();
conn.close();
System.out.println("111");
//System.out.println("num:"+num);
} catch (Exception e) {
e.printStackTrace();
}
//return rows;
}
http://hi.baidu.com/%BD%D6%D0?%F3%B5%C1/blog/item/0d3bf6fd3e4226fbfc037fda.html
获取自动生成的键值,int id primary key auto_increment;
=======================================================================================
java.sql.SQLException: 不支持的特性
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.dbaccess.DBError.throwUnsupportedFeatureSqlException(DBError.java:690)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:3452)
at db.NewDBManager.main(NewDBManager.java:131)
=====================================================================================
据张P说Oracle11g可以支持新特性,现在用的方法是存储过程
create or replace procedure USER_REGIST(p_version in varchar2,p_userid out number) is
/**
* java书城用mtk用户表注册
*/
begin
p_userid := -1;
insert into cdml_sensky_user
(id,uuid,VERSION)
values
(p_userid,p_userid,p_version)
returning id into p_userid; --dbms_output.put_line(p_userid);
update cdml_sensky_user set uuid=to_char(p_userid) where id=p_userid;
commit;
exception
when others then
rollback;
p_userid := -1;
end USER_REGIST;
17:53 2011-6-24
declare user_id int;
begin
USER_REGIST(123456789,user_id);
dbms_output.put_line(user_id);
end;
分享到:
相关推荐
id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL ); ``` - **帖子表**:创建一个帖子表存储主题、内容、作者ID等。 ```sql CREATE TABLE Posts ( ...
id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL ); CREATE TABLE T_SYS_POOL ( id INT ...
blobid NUMBER(10) PRIMARY KEY NOT NULL, image BLOB ); ``` 要将文件写入数据库,你可以使用以下Java代码: ```java public int writeBlob(String path) throws SQLException, IOException { int result = 0;...
id int AUTO_INCREMENT PRIMARY KEY, ``` - **Oracle**: 使用`NUMBER`类型并指定长度。 ```sql id NUMBER(2) PRIMARY KEY, ``` - **SQL Server**: 使用`IDENTITY`关键字自增。 ```sql id INT IDENTITY ...
CREATE TABLE student ( Id mediumint(9) NOT NULL AUTO_INCREMENT, Name varchar(45) DEFAULT NULL, Age int(11) DEFAULT NULL, PRIMARY KEY ( Id )); 输出: 更新前:学生 [studentId=2, studentName=Ranga, age=...
3. **创建表**:编写SQL语句创建留言表,例如:`CREATE TABLE Messages (id INT AUTO_INCREMENT PRIMARY KEY, content VARCHAR(255), timestamp TIMESTAMP)`。 4. **插入数据**:当用户提交留言时,使用`Statement`...
`id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8...
userid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), password VARCHAR(50) ); ``` 此表有三个字段:自动递增的用户ID、用户名和密码,所有字段都有相应的数据类型。 执行SQL语句通常通过`Statement`...
ID INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(255), Description TEXT, ImageData LONGBLOB ); ``` 存取图像时,需要使用编程语言(如Java、Python、PHP或C#)与数据库进行交互。在插入图像时,程序会读取...
id INT AUTO_INCREMENT PRIMARY KEY, number VARCHAR(255), date DATE ); INSERT INTO expense (number, date) VALUES ('123', CURRENT_TIMESTAMP); ``` 在Java中,使用JDBC添加数据时,可以创建一个`Expense`...
hibernate不在自动生成主键值,需要你在插入时自己指明 3.hilo:高低值算法,由数据库表提供高值,程序提供低值 value = hi*(max_lo+1)+lo 4.sequences Cat: cid name color weight age ------------------------...
id INT(5) PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL ); ``` 现在,我们转向项目配置。项目使用YAML格式的配置文件`application.yml`,位于`src/main/...
CREATE TABLE TEST (id NUMBER PRIMARY KEY, name VARCHAR2(50)); ``` - 这里`id`作为主键,`name`为VARCHAR类型字段。 **6. 创建用触发器和序列来生成主键自增长列** - 序列是一种用于自动产生唯一整数值的...
例如,MySQL 的建表语句可能使用`INT AUTO_INCREMENT PRIMARY KEY`来创建主键,而Oracle可能使用`NUMBER(9) PRIMARY KEY`,DB2 则可能使用`BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY`。 3. **配置 ...
Student_ID NUMBER(6) NOT NULL PRIMARY KEY, Student_Name VARCHAR2(10) NOT NULL, Student_Age NUMBER(2) NOT NULL ); ``` - **序列创建**:由于Oracle数据库不支持字段自动增长特性,需创建序列`student_...
"id INT AUTO_INCREMENT PRIMARY KEY," + "title VARCHAR(255)," + "author VARCHAR(255)" + ")"; stmt.executeUpdate(sql); ``` 这段代码创建了一个名为`Books`的表,具有`id`、`title`和`author`三列。 总的...
id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL ); ``` 查询用户信息的SQL可能如下: ```sql SELECT * FROM Users WHERE username = ? AND password = ? ``...
创建数据库表的命令是`create table 表名 (字段名1 字段类型, 字段名2 字段类型,...)`,例如`create table mytable (id int auto_increment primary key, name varchar(14) not null, password varchar(32) not null...
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ); ``` 然后在Tomcat的...
PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'); 到此为止,前期准备工作就完成了。下面开始真正配置...