[ad_1]
ユーザー名、パスワード、生年月日、電話番号、住所、性別、郵便番号などの属性を含む登録フォームを(asp.netとC#を使用して)作成しました。コードにエラーはありません。
しかし、Web サイトを実行して詳細を入力し、[OK]ボタンを押すと、「入力文字列の形式が正しくありませんでした」というエラーが表示されます。
助けてください!
コードは次のとおりです。
private void ExecuteInsert(string Username, string Password, string Confirmpassword, string EmailID, string Firstname, string Lastname, string Address, string City,string State, string Country, string Postalcode,string PhoneNo, string gender, string DOB) { SqlConnection con = new SqlConnection(" Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Online job portal\\App_Data\\database.mdf;Integrated Security=True;User Instance=True"); string sql = "INSERT INTO ojb1(Username,Password,ConfirmPassword,EmailID,Firstname,Lastname,Address,City,State,Country,Postalcode,PhoneNo,Gender,DOB) VALUES" + "(@Username,@Password,@ConfirmPassword,@EmailID,@Firstname,@Lastname,@Address,@City,@State,@Country,@Postalcode,@PhoneNo,@Gender,@DOB)"; try { con.Open(); SqlCommand cmd = new SqlCommand(sql, con); SqlParameter[] param = new SqlParameter[14]; param[0] = new SqlParameter("@Username", SqlDbType.VarChar, 50); param[1] = new SqlParameter("@Password", SqlDbType.VarChar, 50); param[2] = new SqlParameter("@ConfirmPassword", SqlDbType.VarChar, 50); param[3] = new SqlParameter("@EmailID", SqlDbType.VarChar, 50); param[4] = new SqlParameter("Firstname", SqlDbType.VarChar, 50); param[5] = new SqlParameter("Lastname", SqlDbType.VarChar, 50); param[6] = new SqlParameter("Address", SqlDbType.VarChar, 50); param[7] = new SqlParameter("City", SqlDbType.VarChar, 50); param[8] = new SqlParameter("State", SqlDbType.VarChar, 50); param[9] = new SqlParameter("Country", SqlDbType.VarChar, 50); param[10] = new SqlParameter("Postalcode", SqlDbType.Int, 100); param[11] = new SqlParameter("PhoneNo", SqlDbType.Int,100); param[12] = new SqlParameter("Gender", SqlDbType.Char, 10); param[13] = new SqlParameter("DOB", SqlDbType.VarChar, 50); param[0].Value = Username; param[1].Value = Password; param[2].Value = Confirmpassword; param[3].Value = EmailID; param[4].Value = Firstname; param[5].Value = Lastname; param[6].Value = Address; param[7].Value = City; param[8].Value = State; param[9].Value = Country; param[10].Value = Postalcode; param[11].Value = PhoneNo; param[12].Value = gender; param[13].Value = DOB; for (int i = 0; i < param.Length; i++) { cmd.Parameters.Add(param[i]); } cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); } catch (SqlException ex) { string msg = "Insert Error"; msg += ex.Message; throw new Exception(msg); } finally { con.Close(); } } public static void ClearControls(Control Parent) { if (Parent is TextBox) { (Parent as TextBox).Text = string.Empty; } else { foreach (Control c in Parent.Controls) ClearControls(c); } } protected void Next1_Click(object sender, EventArgs e) { if (password.Text == confirmpass.Text) { ExecuteInsert(username.Text, password.Text, confirmpass.Text, EmailID.Text, firstname.Text, Lastname.Text, Address.Text, City.Text, State.Text, Country.Text,Postalcode.Text,Phoneno.Text,Gender.SelectedItem.Text,DOB.Text); Response.Write("Record was successfully added"); ClearControls(Page); } else { Response.Write("password did not match"); password.Focus(); } }
解決策 1
あなたが書いたコードに関する知識がなければ、正確にどこでエラーが発生しているのかを知ることはできません。
so ブレークポイントを配置 Ok
コード内のボタンクリックイベントを調べて、そのエラーが発生している場所を確認してください。
電話番号のデータ型を int から varchar に変更してから、一度確認してください。
次に、問題はおそらく電話番号にあります。
データ型 int は 10 桁の電話番号を保持できません。
の限界だから int
データ型は
Allows whole numbers between -2,147,483,648 and 2,147,483,647
解決策 3
科学はまだコードを示していません.ビューステートによるポストバックの問題かもしれません.
解決策 5
電話番号に問題があると思います。
SQLサーバーの整数範囲は
-2,147,483,648 および 2,147,483,647
ur ph num のデータ型を int から varchar に変更して、もう一度やり直してください
解決策 2
あなたのデータベースでは、生年月日のデータ型はdatetimeだと思います。
レコードを挿入している間、生年月日をテキストとして取得しています。
これを修正するには、日付の文字列形式を次のように日付に変換する必要があります
Convert.ToDateTime(dateofbirthtextbox.text)
まだ問題に直面している場合
これらの2行を置き換えます
param[10].Value = "Postalcode"; param[11].Value = "PhoneNo";
なので
param[10].Value = "12313"; param[11].Value = "12345";
解決策 4
私たちが提供できる唯一の支援は、コードの投稿をリクエストすることです。
そうすることで、助けがすぐに来るようになります。
[ad_2]
コメント