如何在C 中獲取新插入的identity列值

2022-03-15 13:52:42 字數 1031 閱讀 5886

在sql server中identity列是自動增量的列,每次插入新的列時該列會自動填入新的唯一值,在許多應用中需要在插入一條記錄的之後獲得剛插入記錄的identity列的值,許多**介紹了在插入後立刻執行@@identity等值即函式的查詢,但是那都是在同乙個session下的t-sql,在乙個儲存過程中是可以用的,但是在c#中,如果用sqldataadapter的fill方法來做就比較麻煩了。今晚嘗試了一下,在系統特定需求下實現了獲取identity列的新增值。

1string

sql ="

insert into tbusers(user_loginname,user_password,) values(";

2sql +="

'"+logname +"

'";3

sql +="

,'"+password +"

'";4

sql +="

)";5

dataset ds 

=odb.getds(sql +"

;select scope_identity() as id");

6                string id = ds.tables[0].rows[0]["id

"].tostring();

其中第5行的getds函式如下:

1public

dataset getds(

string

str_sql) 

2此外,scope_identity功能類似的還有ident_current 和 @@identity,因為它們都返回插入到 identity 列中的值。 

ident_current 不受作用域和會話的限制,而受限於指定的表。ident_current 返回為任何會話和作用域中的特定表所生成的值。有關更多資訊,請參見 ident_current。

scope_identity 和 @@identity 返回在當前會話中的任何表內所生成的最後乙個標識值。但是,scope_identity 只返回插入到當前作用域中的值;@@identity 不受限於特定的作用域。

C 如何在set中插入struct

上週寫了乙個c 程式,編譯不過,而且vs2010也沒為我指出出錯的 是具體的哪一行,於是我用了二分查詢分,最後定位發現,set的物件在使用insert函式時出錯了。我突然想起set的內部實現是紅黑樹,它會按照一定的準測排序元素,而且set保證無重複元素。以往都是使用set作基本型別的容器,排序準測是...

C 中如何在指定的記憶體中建立新物件

在free store或者是heap中動態建立程式所需物件時,很多人都知道,用 new 就可以了。那麼如何在指定的記憶體空間中建立物件?就比如要在0x320f8該記憶體位址上動態建立乙個int型別,怎麼破?c 提供了幾種特點來方便實現在預先決定的記憶體位置構造乙個物件的任務。在這些特點中,包括乙個特...

如何在Pycharm中新增新的模組

在使用pycharm編寫程式時,我們時常需要呼叫某些模組,但有些模組事先是沒有的,我們需要把模組新增上去。最近在學習爬蟲,寫了下面幾行 結果出現錯誤 錯誤modulenotfounderror no module named bs4 的意思是未找到名為bs4的模組,我們就需要pycharm上安裝 b...