0 0

用jdbc怎么得到sql server 2000中表的主键3

最近在学习jdbc,发现在用jdbc在sql server 2000中想要获得刚插入的数据主键时总提示如下异常:
 
Exception in thread "main" java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;

 

public String getPrimaryKey(){
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Users users = null;
		String primaryKey = null;
		try {
			conn = SinglJdbcUtil.getIntance().getConnection();
			conn.setAutoCommit(false);
			String sql = "insert into tmp (columnz) " +
					"values( ? )" ;
			ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			ps.setString(1, "XKGS_000016");
			
			ps.executeUpdate();
			
			rs = ps.getGeneratedKeys();
			while(rs.next()){
				primaryKey = rs.getString(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			SinglJdbcUtil.getIntance().free(rs, ps, conn);
		}
		return primaryKey;
	}

 表就长着模样 create table tmp(ids int IDENTITY , columnz varchar(20)  constraint pk_ids primary key (ids) )

请问我要怎么修正代码才能得到在用jdbc,进行insert时的那条数据的主键啊


问题补充:我指的是使用jdbc获取刚插入的数据的主键,不通过任何数据库的方式;jdbc提供了这样一个东西Statement.RETURN_GENERATED_KEYS,我就是在使用时出了问题
OO 
2010年11月26日 16:46

3个答案 按时间排序 按投票排序

0 0

如果你调用jdbc提供的这个方法报错的话,如果还是用纯jdbc我觉得只有这样做了。
首先为了确保获得的主键是对应当前用户的,执行插入操作的时候事务上锁,然后调用@@identity 全局函数,获得最后插入的主键。
不过这样貌似性能降低了很多。

2010年11月27日 01:33
0 0

插入后返回的主键值这样获取:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;  在sql语句中加入SELECT @@IDENTITY AS returnName;用来获取主键的值  在程序中获取返回值: 
public int sqlexecutereader(string sql){         
    DBopen();         
    SqlCommand myComm = new SqlCommand(sql, Connection);         
    int newID = Convert.ToInt32(myComm.ExecuteScalar());
    DBclose();
    return newID;     
}

2010年11月26日 17:12
0 0

你是要取insert之后的主键值,还是在这条要insert的数据的主键值?

2010年11月26日 17:10

相关推荐

    shardingsphere_docs_cn.pdf

    使用Sharding-JDBC进行分库分表,请阅读如何分库分表章节。 分库分表后,要进一步提高性能,可以使用读写分离功能。...Oracle和SQLServer的分页涉及到子查询又该如何处理?请阅读分页及子查询。 Sharding

    Mycat-server-1.6-RELEASE源码

    支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持prepare预编译指令(1.6) 支持非堆内存...

    jdbc基础和参考

    ORM:使用元数据信息来描述对象和数据库之间的关系,并且能够自动实现java中持久化对象到关系型数据库中表的映射 脏检查:自动对缓存中的数据进行检查,并且选择在合适的时机和数据库之间进行交互,以保持数据的...

    dbswitch工具提供源端数据库向目的端数据库的批量迁移同步功能,支持数据的全量和增量方式同步

    包括:结构迁移:支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。支持基于正则表达式转换的表名与字段名映射转换。数据同步:基于JDBC的分批次读取源端数据库数据,并基于insert/copy方式将数据分...

    数据库汽车销售系统sql

    3NF,在 SQL Server 2008 上创建数据库,定义各个表的主键和 外键,自行定义一些索引,自行录入部分合理数据,创建一个 登录名和数据库账号,并赋予相应的数据库操作权限。 2) 良好标准:满足及格标准,在此基础上...

    JAVA 课程设计团员管理系统

    (一)实验内容: ...(1)在Access或SQL Server中建立数据库及基础表。在控制面板中正确配置ODBC数据源,并测试成功。 (2)编写图形界面的Application,利用JDBC-ODBC Bridge进行数据库访问,实现要求的功能。

    数据库课程设计--图书管理系统.doc

    数据库基础与应用-SQL SERVER2000. 机械工业出版社出版 指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日 ----------------------- 数据库课程设计--图书管理系统全文共3页,当前为第1页。 数据库课程设计--...

    Hibernate注解

    * 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...

    信息资源目录动态应用web插件

    获取Oracle,Sqlserver,MySql数据库中的表名和描述表中字段(列)详细信息(字段类型,字段中文描述,是否主键,字段大小,精确位),根据基于jdbc_url,用户名,密码web页面简单的录入,提交自动生成信息资源目录。

    信息资源目录动态应用web插件-依赖包

    获取Oracle,Sqlserver,MySql数据库中的表名和描述表中字段(列)详细信息(字段类型,字段中文描述,是否主键,字段大小,精确位),根据基于jdbc_url,用户名,密码web页面简单的录入,提交自动生成信息资源目录。

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要...

    JDiy框架与javaWeb建站平台 v2.6.1.zip

    修复MSSQL数据库环境下,自增主键表在save后,无法立即获取新增记录的id的bug. 优化JDiyRequest的InputStream(允许使用第三方上传组件). 修复数据库连接池中连接失效后,控制台会报错(但不影响使用)的bug;修复...

    基于Java Swing + MySQL + JDBC 的图书管理系统.zip

    MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。...

    一项基于Java+Mysql+JDBC的银行中间业务系统项目.zip

    MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。...

    Java面试宝典2020修订版V1.0.1.doc

    35、MySQL、SqlServer、oracle写出字符存储、字符串转时间 52 36、update语句可以修改结果集中的数据吗? 53 37、oracle如何设置主键自动增长? 53 38、表连接、子查询的区别是什么?它们可以相互转化吗?你倾向于用...

    软件工程工资管理系统

    在Microsoft SQL Server 2000的企业管理器中完成数据库和数据表的创建,具体SQL脚本请参见附录gz.sql SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_...

    MySQL5 权威指南第3版中文版_part1

     19.5 转换器:从Microsoft SQL Server到MySQL  19.6 VBMySQLDirect  第20章 Visual Basic .NET和C#  20.1 ADO .NET与MySQL之间的通信  20.2 编程技巧  20.3 示例:把新图书记录存入mylibrary数据库  20.4 ...

    MySQL 5权威指南(第3版) 中文版 下载地址

     19.5 转换器:从Microsoft SQL Server到MySQL  19.6 VBMySQLDirect  第20章 Visual Basic .NET和C#  20.1 ADO .NET与MySQL之间的通信  20.2 编程技巧  20.3 示例:把新图书记录存入mylibrary数据库  ...

Global site tag (gtag.js) - Google Analytics