2017-04-25 4 views
3

i Daten aus einem Formular einzufügen versuchen Datenbank msaccess ich den aktuellen Code habeEinfügen von Daten in MS Zugriff C# ASP.Net

OleDbConnection con = new OleDbConnection(); 
OleDbCommand cmd = new OleDbCommand(); 
con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\kunz\Documents\Visual Studio 2010\WebSites\Assignment_2_Mark_2\App_Data\nuclearpopsicledb.mdb"; 
cmd.Connection = con; 
string sql = "insert into users values('"+tbUname.Text+"','"+tbPass.Text+"','"+tbName.Text+"','"+tbEmail.Text+"','"+tbEmail.Text+"')"; 

try 
{ 
    con.Open(); 
    cmd.CommandText = sql; 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    Label1.Text = "TRY"; 
} 
catch(Exception ex) 
{ 
    Label1.Text = ex.ToString(); 
    con.Close(); 
} 

meine Datenbank wie strukturiert:

| Benutzername | Passwort | Name | E-Mail |

aber wann immer ich es laufen bekomme ich einen Fehler wie

System.Data.OleDb.OleDbException: Anzahl der Abfragewerte und Zielfelder sind nicht das gleiche. bei System.Data.

ich bin nicht sicher, was ich falsch mache ich bin ein Anfänger in C#

+1

Ihre Objekte, die [IDisposable] (https://msdn.microsoft.com/en-us/library/system.idisposable (v = vs.110) .aspx) wie "OleDbConnection" implementieren, werden nicht ordnungsgemäß verarbeitet . Wickeln Sie sie in eine using-Anweisung ein. – mason

+1

Ich verstehe, dass dies wahrscheinlich eine Lernaufgabe ist, aber Sie speichern Klartextkennwörter in der Datenbank. Dies ist eine große Sicherheitsverletzung. Passwörter sollten in einer Richtung gehackt und verschlüsselt sein und niemals im Klartext gespeichert sein. – mason

Antwort

3

Sie haben eine zusätzliche E-Mail Sie sind vorbei:

cmd.Parameters.AddWithValue("@userName", tbUname.Text.Trim()); 
cmd.Parameters.AddWithValue("@password", tbPass.Text.Trim()); 
cmd.Parameters.AddWithValue("@Name", tbName.Text.Trim()); 
cmd.Parameters.AddWithValue("@Email", tbEmail.Text.Trim()); 

string sql = 
    "insert into users " + 
    "values(@userName, @password, @Name, @Email)"; 
+0

ist dies der beste Weg, es zu tun gibt es einen besseren Weg, wie sql Injektionen zu verhindern – Craftx398

+2

ja, Parameter sind viel besser – GibralterTop

+0

@GibralterTop Dann zeigen, wie man Parameter. Zeigen Sie nicht, wie Sie die Dinge falsch machen. – mason

1

Eigentlich Tisch vier Werte enthält, aber Sie Übergeben 5 Werte in dieser Abfrage. Das ist der Fehler.

Ihr Code:

string sql = "insert into users values('"+tbUname.Text+"','"+tbPass.Text+"','"+tbName.Text+"','"+tbEmail.Text+"','"+tbEmail.Text+"')"; 

tbEmail.Text wird zweimal wiederholt.

Verwandte Themen