2016-06-27 18 views
0

enter image description hereenter image description here Ich versuche, Daten in meine MS Access-Datenbank einzufügen. Der Name meiner Tabelle SignUp.OleDBException wurde von Benutzercode nicht behandelt. Fehlermeldung: OverFlow

cmd.Parameters.Add("@name", OleDbType.VarChar).Value = txtNameSignUp.Text; 
cmd.Parameters.Add("@surname", OleDbType.VarChar).Value = txtSurnameSignUp.Text; 
cmd.Parameters.Add("@phone", OleDbType.VarChar).Value = txtPhoneSignUp.Text; 
cmd.Parameters.Add("@mail", OleDbType.VarChar).Value = txtMailSignUp.Text; 
cmd.Parameters.Add("@address", OleDbType.VarChar).Value = txtAddressSignUp.Text; 
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = txtUserNameSignUp.Text; 
cmd.Parameters.Add("@password", OleDbType.VarChar).Value = txtPasswordSignUp.Text; 
cmd.ExecuteNonQuery(); 
cnn.Close(); 
cnn = null; 

Ich versuchte (OleDBType.Binary).Value = Convert.ToByte(txtPhoneSignUp.Text); für Textbox des Telefons aber dann sagte sie „zu groß“ oder „zu klein“.

sorgu = „INSERT INTO SignUp ([Name], [Name], [Telefon], [Mail], [Adresse], [Benutzername], [Passwort]) Werte (@ name @ Nachname , @ Telefon, @ Mail, @ Adresse, @ Benutzername, @ Passwort); "; cmd = neuer OleDbCommand (sorgu, cnn);

 //cmd.Parameters.AddWithValue("@name", txtNameSignUp.Text); 
     //cmd.Parameters.AddWithValue("@surname", txtSurnameSignUp.Text); 
     //cmd.Parameters.AddWithValue("@phone", Convert.ToDouble(txtPhoneSignUp.Text)); 
     //cmd.Parameters.AddWithValue("@mail", txtMailSignUp.Text); 
     //cmd.Parameters.AddWithValue("@address", txtAddressSignUp.Text); 
     //cmd.Parameters.AddWithValue("@username", txtUserNameSignUp.Text); 
     //cmd.Parameters.AddWithValue("@password", txtPasswordSignUp.Text); 

     cmd.Parameters.Add("@name", OleDbType.VarChar).Value = txtNameSignUp.Text; 
     cmd.Parameters.Add("@surname", OleDbType.VarChar).Value = txtSurnameSignUp.Text; 
     cmd.Parameters.Add("@phone", OleDbType.VarChar).Value = 
     cmd.Parameters.Add("@mail", OleDbType.VarChar).Value = txtMailSignUp.Text; 
     cmd.Parameters.Add("@address", OleDbType.VarChar).Value = txtAddressSignUp.Text; 
     cmd.Parameters.Add("@username", OleDbType.VarChar).Value = txtUserNameSignUp.Text; 
     cmd.Parameters.Add("@password", OleDbType.VarChar).Value = txtPasswordSignUp.Text; 

      cmd.ExecuteNonQuery(); 
      cnn.Close(); 
      cnn = null; 
+1

ich raten werde ändern, dass Sie die Telefonnummer definiert als eine numerische in der db? Die Abfrage wäre nett zu sehen. – Plutonix

+0

Ich versuchte numerische und Text, aber beide nicht funktioniert – ibkanpak

+0

Bitte zeigen Sie die Definition Ihrer Tabelle (und im Idealfall, welche DBMS Sie verwenden). Wenn Ihre Telefonspalte numerisch ist, können Sie den Parameter nicht als 'VarChar' hinzufügen. Aber die meisten Telefonnummern sind wahrscheinlich zu groß für eine numerische Spalte, da sie zu viele Ziffern haben. –

Antwort

0

für OleDBType.Binary benötigen Sie ein byte [], so dass Ihr Code

Encoding.ASCII.GetBytes (txtPhoneSignUp.Text) zu

+0

Ich kann nicht 'Encoding' schreiben. hat es verschiedene Namensräume oder? – ibkanpak

+0

Ja, es ist in System.Text Namespace – Jack

+0

es funktioniert, aber es gibt eine neue Ausnahme. Es besagt, dass der Parameterwert von einem Byte [] nicht in einen String konvertiert werden konnte. wenn ich versuchte, oledbtype.binary gibt es denselben Fehler. – ibkanpak