请问更新数据库后。如何获得 自增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;
}