Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

CARA: Mengambil nilai identitas saat memasukkan data ke dalam Access Database dengan menggunakan Visual Basic.NET

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:815629
RINGKASAN
Artikel ini membahas cara untuk mengambil identitas kolom nilai dari akses database.

Mengambil Identitas nilai dari Jet database berbeda dari SQL Server, karena Jet database tidak mendukung perintah multi-statement batch. Jet Mendukung penyedia OLE DB versi 4.0 Pilih @@ identitas permintaan yang memungkinkan Anda untuk mengambil nilai auto increment lapangan yang dihasilkan pada koneksi Anda. Untuk menjalankan Pilih @@ identitas permintaan, dianjurkan bahwa Anda menggunakan lain OleDbCommand objek. Artikel ini menjelaskan cara menggunakan kedua OleDbCommand untuk mengambil nilai kolom identitas.

Catatan: Fitur ini hanya bekerja dengan Microsoft Jet OLEDB 4.0 database. Versi sebelumnya dari Microsoft Jet OLEDB tidak mendukung ini fitur.

kembali ke atas
INFORMASI LEBIH LANJUT

Tersambung ke Access Database

Untuk menyambung ke akses Database dan membuat sebuah tabel dengan Identitas kolom, ikuti langkah berikut:
  1. Mulai Microsoft Visual Studio.NET 2002.
  2. Pada Berkas menu, titikBaru, lalu klik Project.
  3. Di bawah Jenis proyek, klik Visual Dasar proyek. Di bawah Pola acu KlikAplikasi konsol. Secara default, Module1.vb adalah dibuat.
  4. Nama proyek MyJetApplication kemudian klik Oke.
  5. Mengganti kode yang ada dengan kode berikut:
    Imports SystemImports System.DataImports System.Data.OleDbModule Module1   Sub Main()      ' Open Connection       Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")      cnJetDB.Open()      ' If the test table does not exist, create the Table.      Dim strSQL As String      strSQL = "CREATE TABLE AutoIncrementTest " & _               "(ID int identity, Description varchar(40), " & _               "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"      ' Command for creating Table.      Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)      cmdJetDB.ExecuteNonQuery()      ' Create a DataAdaptor With Insert Command For inserting records      Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)      ' Command to Insert Records.      Dim cmdInsert As New OleDbCommand()      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"      cmdInsert.Connection = cnJetDB      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))      oleDa.InsertCommand = cmdInsert      ' Create a DataTable      Dim dtTest As New DataTable()      oleDa.Fill(dtTest)      Dim drTest As DataRow      ' Add Rows to the Table      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 1"      dtTest.Rows.Add(drTest)      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 2"      dtTest.Rows.Add(drTest)         End SubEnd Module
  6. Mengubah nama sumber Data dalam rangkaian sambungan untuk Arahkan ke Database akses Anda.


kembali ke atas

Perangkap identitas kolom nilai

Untuk meringkas langkah-langkah, di RowUpdated acara DataAdapter, Anda dapat perangkap identitas kolom nilai yang dihasilkan untuk kolom tabel dalam Database Access. Dalam RowUpdated acara, Anda akan menjalankan PILIH @@ IDENTITAS permintaan dengan menggunakan lain Perintah objek, dan kemudian Anda akan menetapkan nilai yang dikembalikan oleh permintaan untuk kolom identitas. Terakhir, panggilan AcceptChanges metode DataRow objek untuk menerima nilai kolom.

Perangkap identitas kolom nilai, ikuti langkah berikut:
  1. Tambahkan kode berikut sebelum Utama metode untuk membuat kedua OleDbCommand objek untuk PILIH @@ IDENTITAS permintaan:
       ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand
  2. Menambahkan kode berikut untuk Utama metode untuk membuat contoh yang baru OleDbCommand kelas:
          ' Create another command to get IDENTITY value.      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB
  3. Menambahkan kode berikut untuk Utama metode untuk penanganan RowUpdated acara:
          ' Delegate for handling RowUpdated event.      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. Menambahkan kode berikut untuk Utama metode untuk meng-update data. The RowUpdated acara dibangkitkan setelah panggilan Pemutakhiran metode.
          ' Update the Data      oleDa.Update(dtTest)
  5. Menambahkan kode berikut untuk Utama metode untuk menjatuhkan AutoIncrementTest tabel dan melepaskan sumber daya:
          ' Drop the table      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"      cmdJetDB.ExecuteNonQuery()      ' Release the resources.      cmdGetIdentity.Dispose()      cmdGetIdentity = Nothing      cmdInsert.Dispose()      cmdInsert = Nothing      cmdJetDB.Dispose()      cmdJetDB = Nothing      cnJetDB.Close()      cnJetDB.Dispose()      cnJetDB = Nothing
  6. Tambahkan berikut RowUpdated event handler kode untuk Module1:
       ' Event handler for RowUpdated event.   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then         ' Get the Identity column value         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())         Debug.WriteLine(e.Row("ID"))         e.Row.AcceptChanges()      End If   End Sub
  7. Pada Debug menu, klikMulai untuk menjalankan aplikasi. Nilai-nilai kolom identitas ditampilkan di jendela Output.
kembali ke atas

Daftar kode lengkap

Imports SystemImports System.DataImports System.Data.OleDbModule Module1   ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand   Sub Main()      ' Open Connection       Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")      cnJetDB.Open()      ' If the test table does not exist then create the Table      Dim strSQL As String      strSQL = "CREATE TABLE AutoIncrementTest " & _               "(ID int identity, Description varchar(40), " & _               "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"      ' Command for Creating Table      Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)      cmdJetDB.ExecuteNonQuery()      ' Create a DataAdaptor With Insert Command For inserting records      Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)      ' Command to Insert Records      Dim cmdInsert As New OleDbCommand()      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"      cmdInsert.Connection = cnJetDB      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))      oleDa.InsertCommand = cmdInsert      ' Create a DataTable      Dim dtTest As New DataTable()      oleDa.Fill(dtTest)      Dim drTest As DataRow      ' Add Rows to the Table      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 1"      dtTest.Rows.Add(drTest)      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 2"      dtTest.Rows.Add(drTest)      ' Create another Command to get IDENTITY Value      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB      ' Delegate for Handling RowUpdated event      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated      ' Update the Data      oleDa.Update(dtTest)      ' Drop the table      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"      cmdJetDB.ExecuteNonQuery()      ' Release the Resources      cmdGetIdentity.Dispose()      cmdGetIdentity = Nothing      cmdInsert.Dispose()      cmdInsert = Nothing      cmdJetDB.Dispose()      cmdJetDB = Nothing      cnJetDB.Close()      cnJetDB.Dispose()      cnJetDB = Nothing   End Sub   ' Event Handler for RowUpdated Event   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then         ' Get the Identity column value         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())         Debug.WriteLine(e.Row("ID"))         e.Row.AcceptChanges()      End If   End SubEnd Module
REFERENSI
Untuk informasi tambahan tentang topik terkait dalam Visual Basic 6.0, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
232144INFO: Jet penyedia DB OLE versi 4.0 Mendukung Pilih @@ identitas
Untuk informasi lebih lanjut, kunjungi Website MSDN berikut situs:kembali ke atas

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 815629 - Tinjauan Terakhir: 10/04/2011 12:07:00 - Revisi: 2.0

Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbjet kbprogramming kbtsql kbsystemdata kbhowtomaster kbmt KB815629 KbMtid
Tanggapan
type="text/javascript"> Asimov.clickstreamTracker.init();