Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

ΔΙΑΔΙΚΑΣΙΕΣ: Ανάκτηση της τιμής της ταυτότητας κατά την εισαγωγή εγγραφών σε βάση δεδομένων της Access με χρήση της Visual Basic .NET

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:815629
Για την έκδοση Microsoft Visual C# .NET αυτού του άρθρου, ανατρέξτε στην ενότητα816112.

Σε αυτήν την εργασία

Περίληψη
Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο για να ανακτήσετε την τιμή της στήλης ιδιοτήτων από μια βάση δεδομένων της Access.

Κατά την ανάκτηση της τιμής της ταυτότητας μιας βάσης δεδομένων Jet είναι διαφορετικό από εκείνο του SQL Server, επειδή μια βάση δεδομένων Jet δεν υποστηρίζει εντολές δέσμης multi-statement. Το Jet OLE DB έκδοση 4.0 η υπηρεσία παροχής υποστηρίζει τηνSELECT @@ Identityερώτημα που σας επιτρέπει να ανακτήσετε την τιμή του πεδίου αυτόματης προσαύξησης που δημιουργείται από τη σύνδεσή σας. Για να εκτελέσετε τοSELECT @@ Identityερώτημα, συνιστάται να χρησιμοποιήσετε άλλοOleDbCommandObject. Αυτό το άρθρο περιγράφει τον τρόπο χρήσης ενός δευτερολέπτουOleDbCommandΓια να ανακτήσετε την τιμή της στήλης ταυτότητας.

ΣΗΜΕΙΩΣΗ:Αυτή η δυνατότητα λειτουργεί μόνο με βάσεις δεδομένων Microsoft Jet OLEDB 4.0. Παλαιότερες εκδόσεις του Microsoft Jet OLEDB δεν υποστηρίζουν αυτήν τη δυνατότητα.

Επιστροφή στην αρχή
Περισσότερες πληροφορίες

Η σύνδεση με τη βάση δεδομένων της Access

Για να συνδεθείτε με τη βάση δεδομένων της Access και να δημιουργήσετε έναν πίνακα με τη στήλη ταυτότητας, ακολουθήστε τα εξής βήματα:
  1. Ξεκινήστε το Microsoft Visual Studio .NET 2002.
  2. Στο διακομιστήFILEμενού, σημείοΝέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο.
  3. underΤύποι έργουΚάντε κλικΤο οπτικό Βασικό έργα. underΠρότυπαενότητα, κάντε κλικ στο κουμπίΕφαρμογή κονσόλας. Από προεπιλογή, δημιουργείται Module1.vb.
  4. Το όνομα του έργουMyJetApplicationκαι, στη συνέχεια, κάντε κλικ στο κουμπίOk.
  5. Αντικαταστήστε τον υπάρχοντα κωδικό με τον ακόλουθο κώδικα:
    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. Για να τροποποιήσετε το όνομα του αρχείου προέλευσης δεδομένων στη συμβολοσειρά σύνδεσης, ώστε να δείχνει προς τη βάση δεδομένων της Access.


Επιστροφή στην αρχή

Παγίδευση την τιμή της στήλης ταυτότητας

Για να συνοψίσετε τα βήματα στο στοRowUpdatedτο συμβάν της DataAdapter, μπορείτε να παγιδεύσετε την τιμή της στήλης ιδιοτήτων που δημιουργείται για μια στήλη του πίνακα σε μια βάση δεδομένων της Access. ΣτοRowUpdatedσυμβάν, θα εκτελεστεί τηνΕΠΙΛΈΞΤΕ ΤΑΥΤΌΤΗΤΑ @@ερώτημα χρησιμοποιώντας έναν άλλοΕντολήτο αντικείμενο και στη συνέχεια θα αντιστοιχίσετε την τιμή που επιστρέφεται από το ερώτημα στη στήλη ταυτότητας. Τέλος, καλέστε τοAcceptChangesη μέθοδος τουDataRowτο αντικείμενο για να αποδεχτείτε την τιμή της στήλης.

Η παγίδευση την τιμή της στήλης ιδιοτήτων, ακολουθήστε τα εξής βήματα:
  1. Προσθέστε τον ακόλουθο κώδικα πριν από τηνΚύριοςΓια να δημιουργήσετε μια δεύτερη μέθοδοςOleDbCommandαντικείμενο για τοΕΠΙΛΈΞΤΕ ΤΑΥΤΌΤΗΤΑ @@Ερώτημα:
       ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand
  2. Προσαρτήστε τον ακόλουθο κώδικα για τοΚύριοςμέθοδος για τη δημιουργία μιας νέας περιόδου λειτουργίας τουOleDbCommandCLASS:
          ' Create another command to get IDENTITY value.      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB
  3. Προσαρτήστε τον ακόλουθο κώδικα για τοΚύριοςμέθοδος για το χειρισμό τουRowUpdatedΣυμβάν:
          ' Delegate for handling RowUpdated event.      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. Προσαρτήστε τον ακόλουθο κώδικα για τοΚύριοςμέθοδος για την ενημέρωση των δεδομένων. Για ναRowUpdatedτο συμβάν ενεργοποιείται μετά την κλήση τουΕνημέρωσηΗ μέθοδος.
          ' Update the Data      oleDa.Update(dtTest)
  5. Προσαρτήστε τον ακόλουθο κώδικα για τοΚύριοςμέθοδος για να αποθέσετε τοAutoIncrementTestπίνακας και αφήστε τους πόρους:
          ' 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. Προσθέστε τα εξήςRowUpdatedκώδικα χειρισμού συμβάντων 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. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπίStartΓια να εκτελέσετε την εφαρμογή. Στο παράθυρο "Έξοδος" εμφανίζονται οι τιμές στήλης ταυτότητας.
Επιστροφή στην αρχή

Ολοκλήρωση της λίστας κωδικών

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
Αναφορές
Για πρόσθετες πληροφορίες σχετικά με ένα σχετικό θέμα στο πρόγραμμα Visual Basic 6.0, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
232144ΠΛΗΡΟΦΟΡΙΕΣ: Jet OLE DB Provider έκδοση 4.0 υποστηρίζει SELECT @@ Identity
Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:Επιστροφή στην αρχή

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί με μηχανική μετάφραση

Ιδιότητες

Αναγνωριστικό άρθρου: 815629 - Τελευταία αναθεώρηση: 12/22/2010 08:07:00 - Αναθεώρηση: 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 KbMtel
Σχόλια
clickstreamTracker.init();