VB.NET下如何利用ExecuteScalar方法及select @@Identity获得“自动编号”的关键字
2007-06-06 16:24
1121 查看
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
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。使用 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
相关文章推荐
- 如何利用VB.NET提供的方法替换字符串中的某个模式
- 如何利用VB.NET网页上编程计数器方法?
- [VB.NET][求助]有关ACCESS表中 主键/关键字 为 自动编号 时与实际数据库同步的问题????
- VB.NET中如何利用IsLeapYear方法进行闰年判断
- 如何利用VB.NET修改系统时间
- 如何利用Guava实现方法调用超时自动中断
- VB.NET中,利用API杀掉Excel进程的方法
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- 如何让SELECT 查询结果额外增加自动递增序号 如果数据表本身并不内含自动递增编号的字段时,要怎么做才能够让SELECT查询结果额外增加自动递增序号呢?下列五种方法供您参考: USE test;
- VB.NET 前缀+日期格式+4位后缀 自动编号,例如GK201007190001
- ACCESS自动编号从1开始-如何让access自动编号重新从1开始排序的方法
- 【VB.NET】如何自动添加类头注释
- VB.net 如何复制datatable中的row到另一个datatable中.两种方法
- [VB.NET]用自动编号做为主键的表无法更新 救命,急!!!!!!!!!!!!!!!!!!!!!
- [VB.NET]如何能获得网页中的input标签?
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- ACCESS自动编号如何恢复从1开始的方法
- 【日记】利用VB.NET实现MYSQL和MSSQL进行批量插入记录的方法及比较