Ich habe eine MS-Access-Datenbank namens db.mdb und es enthält verschiedene Tabelle. Ich erstelle eine Kontoerstellungsseite mit ASP.NET und VB.NET.ASP.NET - VB.NET Eingabe in MS-ACCESS mit Autoinkrement
Ich versuche, Felder innerhalb der Seite in ms-acess db einzugeben, aber wenn ich die db öffne, werden keine Werte eingegeben, obwohl Web-Entwicklung keine Fehler zeigt.
Können Sie mir bitte helfen?
Dies ist der Code:
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub TextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles txtName.TextChanged
End Sub
Protected Sub btnCreateAccount_Click(sender As Object, e As System.EventArgs) Handles btnCreateAccount.Click
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\WebSite3\db.mdb;User Id=admin;Password=;")
Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO [USER] (UserName, UserSurname, Address, Country, TelNo, UserLogin, UserPassword, UserTypeID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", conn)
If txtPass.Text = txtCPass.Text Then
conn.Open()
cmd.Parameters.Add("@UserName", OleDbType.VarChar, 255).Value = txtName.Text
cmd.Parameters.Add("@UserSurname", OleDbType.VarChar, 255).Value = txtSurname.Text
cmd.Parameters.Add("@Address", OleDbType.VarChar, 255).Value = txtUsername.Text
cmd.Parameters.Add("@Country", OleDbType.VarChar, 255).Value = txtCountry.Text
cmd.Parameters.Add("@TelNo", OleDbType.Integer).Value = txtTelNo.Text
cmd.Parameters.Add("@UserLogin", OleDbType.VarChar, 255).Value = txtUsername.Text
cmd.Parameters.Add("@UserPassword", OleDbType.VarChar, 255).Value = txtPass.Text
cmd.Parameters.Add("@UserTypeID", OleDbType.VarChar, 255).Value = "U"
cmd.ExecuteNonQuery()
conn.Close()
lblAccount.Visible = True
End If
End Sub
End Class
EDIT:
So die Benutzer-ID-Feld numerieren Ich versuche. Es ist als automatische Nummer aus der Access-Datenbank festgelegt. Immer wenn ich versuche, die Details in die Seite von der Seite einzugeben, wird es mir nicht erlauben, mir einen Fehler zu geben, dass das Feld AutoNumber nicht NULL sein kann. So habe ich das Stück Code:
newID = Int32.Parse(cmd2.ExecuteScalar()) + 1
so, dass ich die maximale Anzahl von dieser Spalte in der Tabelle erhalten und erhöhen sie um 1 und dann mit dem anderen Befehl hinzugefügt.
cmd.Parameters.Add("@UserID", OleDbType.VarChar, 255).Value = newID
jedoch unter Angabe der mir eine Fehlermeldung,
Conversion from type 'DBNull' to type 'String' is not valid.
ahh ok danke. aber jetzt gibt es mir einen neuen Fehler in dieser Zeile 'Dim cmd2 As OleDbCommand = Neuer OleDbCommand (" SELECT MAX (UserID) FROM USER ", conn)' sagen, es gibt einen Fehler in der 'VON' – Brian
Versuchen Sie - SELECT MAX (UserID) FROM [USER] –
Danke .. jedes Problem scheint zu einem anderen zu führen. Ich aktualisierte die Frage mit dem neuen Fehler – Brian