`
zengguo1988
  • 浏览: 280100 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

获取插入数据后自动增长列的值

    博客分类:
  • J2EE
 
阅读更多
public class Demo
{
/**
* 获取插入数据后的自动增长列的值,这种方式必须是sql2005的驱动才能这样获取,
*在mysql中也是这样获取
* @param args
*/
public static void main(String[] args) {

try {
String sql="insert into person values(?,?)";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=pubs","sa","");

//需要增加一个Statement.RETURN_GENERATED_KEYS这样的参数
java.sql.PreparedStatement p=conn.PreparedStatement(sql,Statement.RETURN_GENERATED_KEYS);
p.setObject(1, "zengguofeef");

//p.setObject(2, new java.sql.Date(System.currentTimeMillis()));

//必须这样设置,System.currentTimeMillis()表示当前系统时间的毫秒数,Timestamp()方法会根据这个毫秒数设置成当前时间
p.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
p.executeUpdate();


//通过这个方法获取getGeneratedKeys();
ResultSet rs=p.getGeneratedKeys();
rs.next();
int num=rs.getInt(1);
System.out.println("自动增长列为:"+num);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}


/**
* 在sql 2000中这样获取,驱动程序,jar包也不同了
*/
public static void main(String[] args)
{

//在sql语句后面加上一个select scope_identity()
String sql="insert into person values(?,?) select scope_identity()";
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa","");
java.sql.PreparedStatement p=conn.prepareStatement(sql);
p.setObject(1, "zengguofeef");
p.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
//这里使用的是executeQuery()方法,而不是executeUpdate()
ResultSet rs=p.executeQuery();
rs.next();
int num=rs.getInt(1);
System.out.println("自动增长列为:"+num);
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
分享到:
评论

相关推荐

    SQL获取刚插入的记录的自动增长列ID的值

    而在SQL Server 2000中,由于没有`OUTPUT`子句,我们需要分两步操作:先插入数据,然后使用`@@IDENTITY`函数来获取最后插入的自动增长列的值: ```sql INSERT INTO TestTable (CreatedDate) VALUES (GETDATE()); ...

    Oracle插入数据时获取自增ID

    这意味着如果你在同一事务中多次插入数据,那么每次插入后都需要分别查询`CURRVAL`来获取刚插入的ID值。 #### 总结 通过序列和触发器,Oracle可以很好地支持在插入数据时自动生成并获取ID的需求。这种方式不仅提高...

    如何为oracle中的表增加自动增长列.pdf

    在Oracle数据库中,表的自动增长列通常是指使用序列(SEQUENCE)或者使用Oracle提供的自动增长数据类型(例如:IDENTITY或者GENERATED AS IDENTITY),以实现表中某列值能够随着记录的增加而自动递增。本文将介绍...

    mysql的插入问题 怎么获得自动增长的ID

    ### MySQL的插入问题:如何获取自动增长的ID 在MySQL中,经常需要用到自动增长的ID字段作为表的主键,特别是在频繁进行数据插入操作时。本文将深入探讨以下几个方面: 1. **理解自动增长ID的工作原理** 2. **在...

    mybatis 获取mysql插入记录的自增长字段值.pdf

    在上述场景下,我们经常需要在插入数据后获取这个自增长的ID值,以便进一步处理,如将订单ID关联到其他表。这里我们将详细探讨如何在MyBatis中实现这一功能。 首先,我们需要理解`useGeneratedKeys`和`keyProperty`...

    oracle自动增长列

    ### Oracle自动增长列知识点 在Oracle数据库中,实现自动增长列的功能主要依赖于`SEQUENCE`对象。通过创建一个序列(SEQUENCE),可以方便地为表中的某列自动生成唯一的值,这对于主键或者需要唯一标识符的场景非常...

    自动增长列的编号生成

    1. **自动增长列**: 在数据库设计中,自动增长列是一种特殊的字段类型,它可以在插入新记录时自动递增。这种特性常用于为主键分配唯一的标识符。 2. **减少连接数据库的次数**: 在处理大量数据时,频繁地与数据库...

    oracle中用序列实现自动增长值

    在Oracle数据库系统中,与SQL Server中的`IDENTITY`特性类似,我们可以通过使用序列(Sequences)来实现字段的自动增长值。序列是一种特殊的数据库对象,它可以生成一系列有序的数值,通常用于为表的主键字段提供...

    jdbc 插入记录并返回自增主键值

    在这个例子中,`your_table`是你要插入数据的表名,`column1`和`column2`是表中的字段名,`value1`和`value2`是对应的插入值。`PreparedStatement`允许我们使用占位符`?`,然后通过`setXXX()`方法设置实际值,以防止...

    建一个插入数据id自动增加1.txt

    根据提供的文件信息,本文将详细解释如何在Oracle数据库中创建一个表,并使该表中的...总之,利用Oracle中的序列和触发器功能,可以轻松实现ID字段的自动增长,这对于提高数据库管理效率、保证数据完整性具有重要意义。

    c#连接sqlserver数据库插入数据从数据库获取时间示

    8. **获取自动生成的ID**:对于带有自动增长ID的表,可以使用`ExecuteScalar()`方法获取新插入行的ID。 ```csharp int newId = (int)command.ExecuteScalar(); ``` 9. **处理结果**:根据`ExecuteScalar()`返回...

    mysql取得自动增长的主键值

    ### MySQL获取自动增长的主键值 在MySQL数据库中,自动增长字段是一种非常有用的特性,尤其是在需要为主键分配唯一标识符的情况下。通过设置一个列的`AUTO_INCREMENT`属性,每当向表中插入新记录时,该列的值会自动...

    SQL Server设置主键自增长列(使用sql语句实现)

    不过,要注意的是,一旦启用了自动增长,就不能手动插入特定的值,除非禁用`IDENTITY_INSERT`。此外,如果主键列的值需要重置或重新开始,可以使用`DBCC CHECKIDENT`命令来调整种子值。在实际应用中,应根据业务需求...

    Oracle与Mysql自动增长列(id)的区别

    创建序列后,在插入数据时,可以使用`test_sequence.NEXTVAL`获取下一个序列值,如: ```sql INSERT INTO my_table (id) VALUES (test_sequence.NEXTVAL); ``` 若需查看当前序列值,可以使用`test_sequence....

    SqlServer 在中获得自增ID的两种方式.txt

    SqlServer 在中获得自增ID的两种方式.存储过程或SQL语句中插入数据后,自动获取自增的ID

    oracle主键自动增长

    2. **创建触发器**:编写触发器,在插入数据前自动获取序列的下一个值,并将其赋给待插入行的主键字段。 3. **插入数据**:在执行插入操作时,无需显式指定主键值,触发器将自动为其赋值。 #### 四、示例代码详解 ...

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    自增长键列统计信息的处理方法

    在SQL Server中,自增长键列通常用于创建主键,它们是自动递增的整数值,确保每行的唯一性。这些列在数据库设计中扮演着重要角色,尤其是在性能优化方面,因为查询优化器会利用这些列的统计信息来制定更有效的查询...

    oracle设定自增长列

    这样,每当有新记录插入时,其`INDEX`字段将自动填充序列生成的下一个值,从而实现了自增长列的功能。 总之,通过上述步骤,我们不仅创建了一个具有自增长主键的表,还通过序列和触发器的组合使用,确保了该主键...

    Mybatis 插入一条或批量插入 返回带有自增长主键记录的实例

    在 Mybatis 中,要实现插入一条或批量插入,需要使用 `<insert>` element,并在其中使用 `useGeneratedKeys` 和 `keyProperty` 属性来获取自增长主键。 MySQL 在 MySQL 中,需要使用 `useGeneratedKeys="true"` 和...

Global site tag (gtag.js) - Google Analytics