2016-11-02 10 views
2

derzeit habe ich ein sehr seltsames Problem während meiner C# & asp.net Web OOP lernen konfrontiert. Ich habe den Code für das Einfügen von Daten in Microsoft Access geschrieben, egal wie ich versuche, die Daten werden nie in meine DB einfügen, obwohl der Code korrekt ist.Fehler beim Einfügen von Daten ohne Fehler

Irgendwie in anderen Projekt verwende ich die gleiche Methode zu tun ist funktioniert ... Wünschte jemand kann hier helfen. Danke.

using System.Data.OleDb; 
public class DataBaseCon 
{ 
    private static OleDbConnection GetConn() 
    { 
     string ConString; 
     ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\Users\user\Desktop\YogaDB.accdb"; 
     return new OleDbConnection(ConString); 
    } 

    public static void Register(string un, string pw, DateTime dob, int ye, string hissue, string email, string contact) 
    { 
     OleDbConnection myConnection = GetConn(); 
     string myQuery = "INSERT INTO User(Username, Password, DateOfBirth, YogaExp, HealthIssue, Email, Contact, UserType) VALUES ('" + un + "' , '" + pw + "' , '" + dob + "' , '" + ye + "', '" + hissue + "' , '" + email + "', '" + contact + "', 'student')"; 
     OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection); 

     try 
     { 
      myConnection.Open(); 
      myCommand.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Exception in DBHandler", ex); 
     } 
     finally 
     { 
      myConnection.Close(); 
     } 
    } 

} 

Taste Funktion hier:

protected void RegisterBtn_Click(object sender, EventArgs e) 
     { 
      string un = TextBox1.Text; 
      string pw = TextBox2.Text; 
      DateTime dob = Calendar1.SelectedDate; 
      int ye = int.Parse(TextBox4.Text); 
      string hissue = TextBox5.Text; 
      string email = TextBox6.Text; 
      string contact = TextBox7.Text; 
      DataBaseCon.Register(un, pw, dob, ye, hissue, email, contact); 
      Label8.Text = "Congratulation "+ un +" , success to register!"; 
     } 
+1

Erhalten Sie eine Ausnahme? – Pikoh

+3

** Warnung ** Yoru-Code ist extrem anfällig für SQL-Injektion. –

+1

keine ausnahme, fehler? und hast du die Registrierungsmethode debuggt? – Badiparmagi

Antwort

1

Verwenden Befehlsparameter es werden Sie von SQL-Injection schützen und auch Sie Probleme vermeiden. Benutzer ist reserviertes Wort in der Access, so sollten Sie es wie folgt entkommen [User].

string myQuery = @" 
       INSERT INTO 
        [User] (Username, [Password], DateOfBirth, YogaExp, HealthIssue, Email, Contact, UserType) 
       VALUES (@UserName, @Password, @DateOfBirth, @YogaExp, @HealthIssue, @Email, @Contact, @UserType)"; 

OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection); 

myCommand.Parameters.AddWithValue("@UserName", un); 
myCommand.Parameters.AddWithValue("@Password", pw); 
myCommand.Parameters.AddWithValue("@DateOfBirth", dob); 
myCommand.Parameters.AddWithValue("@YogaExp", ye);  
myCommand.Parameters.AddWithValue("@HealthIssue", hissue); 
myCommand.Parameters.AddWithValue("@Email", email);  
myCommand.Parameters.AddWithValue("@Contact", contact); 
myCommand.Parameters.AddWithValue("@UserType", "student"); 

Seien Sie bewusst, dass es keine benannten Parameter in OleDbCommand ist, so dass Sie MUST die Parameter in derselben Reihenfolge wie in der Abfrage definieren!

Hier ist die Reserved words in MS Access ->User ist Teil von ihnen, also sollten Sie es entkommen!

Entfernen Sie diesen Teil Ihres Codes, Sie essen Ihre Ausnahmen!

catch (Exception ex) 
{ 
    Console.WriteLine("Exception in DBHandler", ex); 
} 

schreiben es so:

catch 
{ 
    throw; 
} 

EDIT: Wie @GordThompson sagte Password Wort zu reserviert ist, so dass Sie es entkommen sollte!

+0

Ihre Lösung hilft dem OP bei der Sicherung seiner Vorgehensweise von SQL-Injektion. Löst es auch die Ausnahme, vor der er steht? – RBT

+0

Ja, sein Problem entgeht nicht dem [Benutzer] – mybirthname

+0

@mybirthname Ich habe versucht, [Benutzer] gerade jetzt zu verwenden, konnte es noch nicht in meine Access-Datenbank einfügen. –

Verwandte Themen