`

oracle jdbc 获取自动生成的键值,int id primary key auto_increment;

阅读更多

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


 
 
分享到:
评论

相关推荐

    JDBC.rar_jdbc_simple bbs jdbc

    id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL ); ``` - **帖子表**:创建一个帖子表存储主题、内容、作者ID等。 ```sql CREATE TABLE Posts ( ...

    mybatsi+AOP+注解生成动态数据源

    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 ...

    使用JDBC4.0操作Oracle中BLOB类型的数据方法

    blobid NUMBER(10) PRIMARY KEY NOT NULL, image BLOB ); ``` 要将文件写入数据库,你可以使用以下Java代码: ```java public int writeBlob(String path) throws SQLException, IOException { int result = 0;...

    Hibernate-add学习

    id int AUTO_INCREMENT PRIMARY KEY, ``` - **Oracle**: 使用`NUMBER`类型并指定长度。 ```sql id NUMBER(2) PRIMARY KEY, ``` - **SQL Server**: 使用`IDENTITY`关键字自增。 ```sql id INT IDENTITY ...

    CRUD_Operations_ByUsing_JDBC

    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=...

    实训专题java--JSP+JDBC留言管理.

    3. **创建表**:编写SQL语句创建留言表,例如:`CREATE TABLE Messages (id INT AUTO_INCREMENT PRIMARY KEY, content VARCHAR(255), timestamp TIMESTAMP)`。 4. **插入数据**:当用户提交留言时,使用`Statement`...

    Servlet和jdbc登录示例源代码(内附数据库脚本)

    `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...

    第6章 熟练掌握连接MySQL数据库操作

    userid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), password VARCHAR(50) ); ``` 此表有三个字段:自动递增的用户ID、用户名和密码,所有字段都有相应的数据类型。 执行SQL语句通常通过`Statement`...

    计算机软件-商业源码-实例122-在数据库中存取图像.zip

    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`...

    jdbc基础和参考

    hibernate不在自动生成主键值,需要你在插入时自己指明 3.hilo:高低值算法,由数据库表提供高值,程序提供低值 value = hi*(max_lo+1)+lo 4.sequences Cat: cid name color weight age ------------------------...

    海绵宝宝个人安全云盘系统环境搭建1

    id INT(5) PRIMARY KEY AUTO_INCREMENT, user_name VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL ); ``` 现在,我们转向项目配置。项目使用YAML格式的配置文件`application.yml`,位于`src/main/...

    快速Java和Oracle集成SSH开发注意问题.pdf

    CREATE TABLE TEST (id NUMBER PRIMARY KEY, name VARCHAR2(50)); ``` - 这里`id`作为主键,`name`为VARCHAR类型字段。 **6. 创建用触发器和序列来生成主键自增长列** - 序列是一种用于自动产生唯一整数值的...

    quartz建表语句

    例如,MySQL 的建表语句可能使用`INT AUTO_INCREMENT PRIMARY KEY`来创建主键,而Oracle可能使用`NUMBER(9) PRIMARY KEY`,DB2 则可能使用`BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY`。 3. **配置 ...

    hibernate连接oracle数据库.pdf

    Student_ID NUMBER(6) NOT NULL PRIMARY KEY, Student_Name VARCHAR2(10) NOT NULL, Student_Age NUMBER(2) NOT NULL ); ``` - **序列创建**:由于Oracle数据库不支持字段自动增长特性,需创建序列`student_...

    java se连接mysql详细说明

    "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 = ? ``...

    mysql数据库编程.pdf

    创建数据库表的命令是`create table 表名 (字段名1 字段类型, 字段名2 字段类型,...)`,例如`create table mytable (id int auto_increment primary key, name varchar(14) not null, password varchar(32) not null...

    JDBC数据源连接池配置及应用

    `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的...

    springmybatis

    PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'); 到此为止,前期准备工作就完成了。下面开始真正配置...

Global site tag (gtag.js) - Google Analytics