INSERT INTO Friends(playerid,nickname,targetid,type,state) VALUES(33, '222', 55, 2, 200 ) select @@identity怎样接收返回 主键的值
参考下。。
部分代码  这是返回受影响的行数。。  public int insert( String table, String cols, JSONObject obj ) throws Exception { String[] colarr = cols.split( "," );
String SQLStr = "INSERT INTO " + table + "(" + cols + ") VALUES( ";
for( int i = 0 ; i < colarr.length ; i++ ) {
if( i == ( colarr.length - 1 ) ) {
SQLStr += "? ";
}else{
SQLStr += "?, ";
}
}
SQLStr += ")";
        String T_sql = SQLStr + " select @@identity ";
PreparedStatement pstmt = makeStatement( T_sql, colarr, obj );
return pstmt.executeUpdate(); }

解决方案 »

  1.   

    lai ren  hui da a  ..........
      

  2.   

    select ident_current('tablename')--标识当前值
    select ident_incr('tablename')--标识增量
    select ident_seed('tablename')--标识种子
      

  3.   

    SQL标识列初探
    一、标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列。
    该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型
    2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
    3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。由于以上特点,使得标识列在数据库的设计中得到广泛的使用。二、标识列的组成
    创建一个标识列,通常要指定三个内容:
    1、类型(type)
    在SQL Server 2000中,标识列类型必须是数值类型,如下:
    decimal、int、numeric、smallint、bigint 、tinyint 
    其中要注意的是,当选择decimal和numeric时,小数位数必须为零
    另外还要注意每种数据类型所有表示的数值范围2、种子(seed)
    是指派给表中第一行的值,默认为13、递增量(increment)
    相邻两个标识值之间的增量,默认为1。三、标识列的创建与修改
    标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这里只讨论使用Transact-SQL的方法1、创建表时指定标识列
    标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
    下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
    CREATE TABLE T_test
    (ID int IDENTITY(1,1),
    Name varchar(50)
    )2、在现有表中添加标识列
    下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列
    --创建表
    CREATE TABLE T_test
    (Name varchar(50)
    )--插入数据
    INSERT T_test(Name) VALUES('张三')--增加标识列
    ALTER TABLE T_test
    ADD ID int IDENTITY(1,1)3、判段一个表是否具有标识列可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
    Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')
    如果有,则返回1,否则返回04、判断某列是否是标识列可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
    如果该列为标识列,则返回1,否则返回04、查询某表标识列的列名
    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
       WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(      
          OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=15、标识列的引用如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
    例如,若要查询上例中ID等于1的行,
    以下两条查询语句是等价的
    SELECT * FROM T_test WHERE IDENTITYCOL=1
    SELECT * FROM T_test WHERE ID=16、获取标识列的种子值可使用函数IDENT_SEED,用法:
    SELECT IDENT_SEED ('表名')7、获取标识列的递增量可使用函数IDENT_INCR ,用法:
    SELECT IDENT_INCR('表名')8、获取指定表中最后生成的标识值可使用函数IDENT_CURRENT,用法:
    SELECT IDENT_CURRENT('表名') 
    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/04/26/4125239.aspx