日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

通过程序获得SQL Server自增型字段的函数:GetKey

發布時間:2025/4/14 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过程序获得SQL Server自增型字段的函数:GetKey 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過程序獲得SQL Server自增型字段的函數:GetKey

?

概述:

通過程序來產生自增型字段,可以避免多用戶操作的讀取臟數據,操作也很簡便.可以更好的在程序中控制這些關鍵字段的數值.

?

關鍵步驟:

1.???? 創建用于存放需要自增的數據表.(systemkey)

SQL Script 如下:

if?exists?(select?*?from?dbo.sysobjects?where?id?=?object_id(N'[dbo].[SystemKey]')?and?OBJECTPROPERTY(id,?N'IsUserTable')?=?1)
drop?table?[dbo].[SystemKey]
GO

CREATE?TABLE?[dbo].[SystemKey]?(
????
[ID]?[int]?NOT?NULL?,
????
[KeyName]?[nvarchar]?(50)??NOT?NULL?,
????
[KeyValue]?[int]?NOT?NULL?,
????
[SourceID]?[nvarchar]?(50)??NOT?NULL?,
????
[LockTime]?[datetime]?NULL?
)?
ON?[PRIMARY]
GO

KeyName:關鍵字的字段名(我們需要的字段名稱,手工添加到這個表中)

KeyValue:對應字段名的值.

SourceID:字段的來源,如果沒有可以填””

LockTime:鎖定的時間,在程序內部使用.

?

2.??? GetKeys方程,通過調用GetKeys得到關鍵字的值.

函數描述如下:

Imports?Microsoft.ApplicationBlocks.Data
Imports?Microsoft.VisualBasic.CompilerServices
Imports?System.Threading
Imports?System.Data.SqlClient
Public?Class?ClassTestClass?ClassTest
????
Public?Function?GetKeys()Function?GetKeys(ByVal?KeyName?As?String,?ByVal?Source?As?String,?ByVal?CNString?As?String)?As?Integer
????????
Dim?connection?As?New?SqlConnection(CNString)

????????
Dim?NewNum?As?Integer
????????
Dim?obj2?As?Object
????????
Dim?sFlage?As?String?=?"Flag"
????????Try
????????????
Dim?sql?As?String
????????????
Dim?time?As?DateTime?=?DateAndTime.Now.AddSeconds(1)
????????????connection.Open()
????????????
Do?While?(StringType.StrCmp(sFlage,?"",?False)?<>?0)
????????????????sql?
=?(("Update?[SystemKey]?Set?[SourceID]='"?&?Source?&?"',?[LockTime]=GetDate()??Where?[KeyName]='"?&?KeyName)?&?"'?AND???((DATEADD(millisecond,?1000,?LockTime)?<GetDate()?)?OR?(?SourceID=''))")
????????????????
Dim?j?As?Integer?=?SqlHelper.ExecuteNonQuery(connection,?CommandType.Text,?sql)
????????????????
If?(j?>?0)?Then
????????????????????sFlage?
=?""
????????????????????Exit?Do
????????????????
End?If
????????????????sFlage?
=?"Err"
????????????????connection.Close()
????????????????
If?(DateTime.Compare(time,?DateAndTime.Now)?<?0)?Then
????????????????????
Return?-1
????????????????
End?If
????????????????Thread.Sleep(
10)
????????????
Loop

????????????sql?
=?"Select?KeyValue??From?[SystemKey]?Where?[KeyName]='"?&?KeyName?&?"'?AND?SourceID='"?&?Source?&?"'"
????????????Dim?OldNum?As?Object?=?SqlHelper.ExecuteScalar(connection,?CommandType.Text,?sql)
????????????
Dim?num?As?Integer?=?(IntegerType.FromObject(OldNum)?+?1)
????????????sql?
=?"Update?[SystemKey]?Set?[KeyValue]="?&?StringType.FromInteger(num)?&?",?[SourceID]=''?Where?[KeyName]='"?&?KeyName?&?"'"
????????????SqlHelper.ExecuteNonQuery(connection,?CommandType.Text,?sql)
????????????NewNum?
=?num
????????
Catch?exception?As?Exception
????????????NewNum?
=?-1
????????
Finally
????????????
If?Not?connection?Is?Nothing?Then
????????????????
CType(connection,?IDisposable).Dispose()
????????????
End?If
????????
End?Try
????????
Return?NewNum
????
End?Function

End?Class

轉載于:https://www.cnblogs.com/rippleyong/archive/2005/01/31/99892.html

總結

以上是生活随笔為你收集整理的通过程序获得SQL Server自增型字段的函数:GetKey的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。