如何获取表中的最后一个自动增量值? VB.NET

时间:2013-12-28 05:37:19

标签: sql vb.net oledb

如何使用OleDb获取表中的最后一个主键/自动增量值?

我需要获取此值,以便在添加之前为记录创建一个文件夹,以便在添加文件时将文件复制到该文件夹​​中。

有什么想法吗? 我试过以下。

@@Identity'需要首先插入记录,如果不先复制文件,我就不能这样做 SELECT SCOPE_IDENTITY()'不适用于OleDb

这是我收到的错误消息:

enter image description here

6 个答案:

答案 0 :(得分:2)

我认为这可行:

SELECT MAX(ID) FROM MyTable

答案 1 :(得分:2)

你可以这样做,因为Jet 4.0提供程序支持@@IdentityReference

Dim query As String = "Insert Into Categories (CategoryName) Values (?)"
Dim query2 As String = "Select @@Identity"
Dim ID As Integer
Dim connect As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Northwind.mdb"
Using conn As New OleDbConnection(connect)
  Using cmd As New OleDbCommand(query, conn)
    cmd.Parameters.AddWithValue("", Category.Text)
    conn.Open()
    cmd.ExecuteNonQuery()
    cmd.CommandText = query2
    ID = cmd.ExecuteScalar()
  End Using
End Using

答案 2 :(得分:0)

试试这个

Select IDENT_CURRENT('TableName')

它将返回表格的最后ID(如果是Auto_increment)

答案 3 :(得分:0)

reference

**c#**
string query = "Insert Into Categories (CategoryName) Values (?)";
string query2 = "Select @@Identity";
int ID;
string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Northwind.mdb";
using (OleDbConnection conn = new OleDbConnection(connect))
{
  using (OleDbCommand cmd = new OleDbCommand(query, conn))
  {
    cmd.Parameters.AddWithValue("", Category.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
    cmd.CommandText = query2;
    ID = (int)cmd.ExecuteScalar();
  }
}

**VB**
Dim query As String = "Insert Into Categories (CategoryName) Values (?)"
Dim query2 As String = "Select @@Identity"
Dim ID As Integer
Dim connect As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Northwind.mdb"
Using conn As New OleDbConnection(connect)
  Using cmd As New OleDbCommand(query, conn)
    cmd.Parameters.AddWithValue("", Category.Text)
    conn.Open()
    cmd.ExecuteNonQuery()
    cmd.CommandText = query2
    ID = cmd.ExecuteScalar()
  End Using
End Using

refer

答案 4 :(得分:0)

您可以先尝试检查是否为NULL:

Select if(IsNull(Max(ColName)),1,Max(ColName) + 1 ) From YourTable

答案 5 :(得分:0)

try this (vb.net)
'''
Dim lastrecord As Integer
    Dim command As New SqlCommand("Select IDENT_CURRENT('tbluom')+1", conn)
    command.ExecuteNonQuery()
    Dim dt As New DataTable()
    Dim da As New SqlDataAdapter(command)
    lastrecord = command.ExecuteScalar()
    txt_uomid.Text = lastrecord
    MsgBox(lastrecord)
    Dim encode As String = txt_uomid.Text '"99999"
    Dim encint As Integer = Integer.Parse(encode) '+ 1
    encode = "00" & "-" & encint.ToString("00000").Substring(1, 4)
    MsgBox(encode)
    ''''