2016-06-27 17 views
0

enter image description hereenter image description here私は私のMS Accessデータベースにデータを挿入しようとします。私のテーブルの名前SignUp。ユーザーコードによってOleDBExceptionが処理されませんでした。エラーメッセージ: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; 

私は電話のテキストボックスのために(OleDBType.Binary).Value = Convert.ToByte(txtPhoneSignUp.Text);に試みたが、それは「大きすぎる」または「小さすぎる」と述べました。

sorgu =「@新規アカウント ([名]、[姓]、[電話]、[メール]、[アドレス]、[ユーザー名]、[パスワード]) 値(。INSERT INTO名、姓@ 、@電話、@メール、@アドレス、@ユーザー名、@パスワード); "; cmd =新しい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

にコードを変更します電話番号はデータベースの数値として定義されていますか?クエリは見やすいでしょう。 – Plutonix

+0

私は数値とテキストを試しましたが、どちらもうまくいきませんでした。 – ibkanpak

+0

あなたのテーブルの定義を表示してください(理想的にはあなたが使っているdbmsです)。電話欄が数値の場合、パラメータを 'VarChar'として追加することはできません。しかし、ほとんどの電話番号は数字の列が大きすぎるため、おそらく「大きすぎます」となります。 –

答えて

0

OleDBType.Binaryあなたはバイト[]を必要とするので、私はあなたが持っていることを推測するつもりです

Encoding.ASCII.GetBytes(txtPhoneSignUp.Text)

+0

私は 'エンコーディング'を書くことができません。それは別の名前空間を持っていますか? – ibkanpak

+0

はい、それはSystem.Text名前空間 – Jack

+0

で動作しますが、新しい例外があります。 Byte []のパラメータ値をStringに変換できませんでした。私はoledbtype.binaryしようとすると、同じエラーが発生します。 – ibkanpak

関連する問題