2012-03-25 8 views
3

Ich habe eine Zugriffsdatei mit einer Tabelle namens "Login" erstellt. Die Spalten sind Benutzername und Passwort.Wie Einfügen von Daten in MS Access-Datei mit C#?

Jetzt möchte ich neue Mitglieder der Tabelle mit ihrem Benutzernamen und Passwort hinzufügen. Die Informationen werden von Textbox1 und Textbox2 erhalten.

Wie kann ich das tun?

Übrigens, was ist die Verbindungszeichenfolge? Ist es von den Datenbankeigenschaften? was ich bekomme, ist "@ Provider = Microsoft.ACE.OLEDB.12.0; Datenquelle = C: \ Benutzer \ qianren \ Desktop \ iplan Version \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ bin \ Debug \ log.accdb". Ist es richtig? Ist es der richtige Weg, die Verbindungszeichenfolge zu schreiben?

+0

Sind Sie der Entity Framework oder ADO.NET verwenden? Etwas anderes? – McGarnagle

Antwort

3

Zuerst müssen Sie einen Verweis auf Microsoft.Office.Interop.Access unter der Registerkarte .Net im Dialogfeld "Add Reference" in Visual Studio hinzufügen.

Erstellen Sie dann zwei Variablen, eine für Ihren textbox1 Text, Text eine andere für Ihre TextBox2 wie so:

var foo = textbox1.Text; 
var bar = textbox2.Text; 

Dann using Microsoft.Office.Interop.Access; auf Ihre using-Anweisungen hinzu.

Dann brauchen Sie eine neue Instanz der Application-Klasse zu machen, damit die folgenden Ihre Methode hinzufügen:

var ap = new Microsoft.Office.Interop.Access.Application(); 

dann Ihre Datenbank wie so öffnen:

ap.OpenCurrentDatabase(@"C:\Users\qianren\Desktop\iplan version\WindowsFormsApplication2\WindowsFormsApplication2\bin\Debug\log.accdb"); 

Dann ein Insert-Abfrage ausführen wie folgt:

Wenn Sie sich der Syntax unsicher sind, können Sie diese Abfrage mit dem Mic entwerfen Rosoft Access Query Designer, klicken Sie auf die SQL-Schaltfläche in der unteren rechten Ecke des Bildschirms und kopieren Sie die SQL über.

Schließen Sie dann Ihre Datenbank wie folgt:

ap.CloseCurrentDatabase(); 

Schließlich Aufräumen nicht verwaltete Objekt wie folgt:

Marshal.ReleaseComObject(ap); //Sorry this is nearly a year late, just noticed it!