首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教更新数据库后。怎么获得 自增ID 或 主键值

2012-01-11 
请问更新数据库后。如何获得 自增ID 或 主键值 ?ACC数据库中使用i.thisAdapter.Update(i.thisDataSet,ite

请问更新数据库后。如何获得 自增ID 或 主键值 ?


ACC   数据库中

使用    

i.thisAdapter.Update(i.thisDataSet,   "ite ");

插入新数据后。。。


如何获得   自增ID   或   主键值   ?    

PHP中有一个函数可以传回最后一次使用   INSERT   指令的   ID。  

mysql_insert_id:   传回最后一次使用   INSERT   指令的   ID。  


不知道C#中是否有这样的方法。。。。。。


查询最大值的方法不是很准确,而且效率也不好。。




[解决办法]
使用存储过程吧
ALTER PROCEDURE [dbo].[Deformity_ALHealingInfo_ADD]
@ALHealingInfo_ID int output,
@ALDeformity_ID int ,
@DeafAid int = null,
@ElectronCochlea int = null
AS
INSERT INTO Deformity_ALHealingInfo
(
[ALDeformity_ID],[DeafAid],[ElectronCochlea]
)
VALUES
(
@ALDeformity_ID,@DeafAid,@ElectronCochlea
)
SET @ALHealingInfo_ID = @@IDENTITY
数据连接层
parameters[14].Value = model.ALHealingInfo_ID;
parameters[14].Direction = ParameterDirection.Output;
就可以了

[解决办法]
public static long GetRecentAutoIncreasedIdentity(IDBWrapper wrapper)
{
// 检测wrapper的 状态
if (wrapper.State != ConnectionState.Open)
{
// 此处直接用中文异常,因为这是给程序员看的异常消息
throw new Exception( "插入记录的方法与本方法必须使用同一个wrapper,并且保持连接打开状态。 ");
}

long lonValue = -1;

string strSql = String.Format( "SELECT @@Identity ");
object recentID = cmd.Execute(wrapper, strSql);
// 检测recentID是否空
if ( recentID!=null && recentID != DBNull.Value )
{
lonValue = Convert.ToInt64(recentID);
}

return lonValue;
}

热点排行