【解決方法】入力文字列は、正しい形式ではありませんでした

[ad_1]

ユーザー名、パスワード、生年月日、電話番号、住所、性別、郵便番号などの属性を含む登録フォームを(asp.netとC#を使用して)作成しました。コードにエラーはありません。
しかし、Web サイトを実行して詳細を入力し、[OK]ボタンを押すと、「入力文字列の形式が正しくありませんでした」というエラーが表示されます。
助けてください!

コードは次のとおりです。

C#
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行を置き換えます

C#
param[10].Value = "Postalcode";
              param[11].Value = "PhoneNo";

なので

C#
param[10].Value = "12313";
              param[11].Value = "12345";

解決策 4

私たちが提供できる唯一の支援は、コードの投稿をリクエストすることです。
そうすることで、助けがすぐに来るようになります。

[ad_2]

コメント

タイトルとURLをコピーしました