VB.NET下如何利用ExecuteScalar方法及select @@Identity获得“自动编号”的关键字

Command.ExecuteScalar 方法
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 oleDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少


SELECT @@IDENTITY方法
取出前一条语句的自动编号的关键字(即:必须首先执行一个insert,然后马上用SELECT   @@IDENTITY;来得到你插入行的id;否则返回的始终是0! )。Access在Jet 4.0 OLEDBProviderfor 支持。

==========================================================================
Access一次只能执行一条SQL。
多条SQL需要多次执行,这是限制。


在SQL Server中,可以一次执行多条SQL语句。
Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。


但是Access中可以连续执行N条语句,象下面这样:

        OleCommand.CommandText = "INSERT INTO MyTable (N1,N2) VALUES (22,11)"
        OleCommand.ExecuteNonQuery()
        OleCommand.CommandText = "SELECT @@IDENTITY"
        Dim ID As Integer = OleCommand.ExecuteScalar()

 完整的函数如下: 
 ==========================================================================
    '*
    '*作用:获得新增记录的“自动编号”关键字
    '*参数:
    '*    ——connectionString :连接字符串
    '*    ——InsertCommandText :插入新记录的 INSERT 语句
    '*
    Public Function GetIdentity(ByVal connectionString As String, ByVal InsertCommandText As String) As Integer
        Using OleConnection As New OleDbConnection(connectionString)
            Dim OleCommand As New OleDbCommand()
            Try
                OleConnection.Open()
                OleCommand.Connection = OleConnection
                '
                OleCommand.CommandText = InsertCommandText
                OleCommand.ExecuteNonQuery()
                OleCommand.CommandText = "SELECT @@IDENTITY"
                Dim newProdID As Integer = OleCommand.ExecuteScalar()
                'Convert.ToInt32(OleCommand.ExecuteScalar())
                Return newProdID
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                OleConnection.Close()
            End Try
        End Using
    End Function

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值