-2

システムにログインしてデータを挿入しようとしました。私のクエリにはエラーはありませんが、実行時に「オブジェクト参照がオブジェクトのインスタンスに設定されていません」として例外がスローされました。私のコードをチェックして、私を修正してください。

protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            if (TextBox6.Text == " ")
            {
                string alertmessage = "";
                alertmessage = "Username should not be blank";
                this.CreateMessageAlert(this, alertmessage, "alertKey");
                TextBox6.Focus();
            }
            else if (TextBox7.Text == " ")
            {
                string alertmessage = "";
                alertmessage = "Username should not be blank";
                this.CreateMessageAlert(this, alertmessage, "alertKey");
                TextBox7.Focus();
            }
            else
            {
                string sq = "SELECT COUNT(*) FROM tbl_KKSUser WHERE Uname=@un and Password=@pas";
                SqlCommand sd = new SqlCommand(sq, con);
                SqlParameter unameparam;
                unameparam = new SqlParameter("@un", SqlDbType.VarChar, 25);
                unameparam.Value = TextBox6.Text;
                sd.Parameters.Add(unameparam);

                string original = TextBox7.Text.Trim();
                string withhash = original;
                b1 = Encoding.BigEndianUnicode.GetBytes(withhash);
                encrypted = Convert.ToBase64String(b1);
                SqlParameter passparam;
                passparam = new SqlParameter("@pas", SqlDbType.VarChar, 8000);
                passparam.Value = Convert.ToString(encrypted);
                sd.Parameters.Add(passparam);

                con.Open();
                {
                    int iresults;
                    iresults = Convert.ToInt32(sd.ExecuteScalar().ToString());
                    if (iresults > 0)
                    {
                        string q = "insert into tbl_KKSMaterialRaise(MaterialCode,Source,Category,Population,StockInStores,Specification,PrearedBy,CheckedBy,ApprovedBy,CreatedDate) values(@mc,@sc,@cat,@pop,@sis,@spec,@pb,@cb,@ab,@cd)";
                        SqlCommand dm = new SqlCommand(q, con);
                        dm.Parameters.AddWithValue("@mc", Mcodeddl.SelectedItem.Text);
                        dm.Parameters.AddWithValue("@sc", TextBox1.Text.Trim());
                        dm.Parameters.AddWithValue("@cat", TextBox2.Text.Trim());
                        dm.Parameters.AddWithValue("@pop", TextBox3.Text.Trim());
                        dm.Parameters.AddWithValue("@sis", TextBox4.Text.Trim());
                        dm.Parameters.AddWithValue("@spec", TextBox5.Text.Trim());
                        dm.Parameters.AddWithValue("@pb", PBddl.SelectedItem.Text);
                        dm.Parameters.AddWithValue("@cb", CBddl.SelectedItem.Text);//In this line i have got error
                        dm.Parameters.AddWithValue("@ab", ABddl.SelectedItem.Text);
                        dm.Parameters.AddWithValue("@cd", DateTime.Today);
                        dm.ExecuteNonQuery();
                        string alertmessage = "";
                        alertmessage = "Component Details Saved";
                        this.CreateMessageAlert(this, alertmessage, "alertKey");
                    }
                    else
                    {
                        Response.Write("<script>alert('Invalid Username/Password')</script>");
                    }
                }
                con.Close();

            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }
4

2 に答える 2

2

ドロップダウン リストの 1 つでオプションが選択されていない可能性が最も高いようです。つまり、null 参照は次のような行のいずれかから来ています。

dm.Parameters.AddWithValue("@mc", Mcodeddl.SelectedItem.Text);

.Text プロパティを取得する前に、それらすべてに項目が選択されていることを確認してください。

そうでない場合は、どの行が例外を引き起こしているかを知っておくと便利です。通常は、例外スタック トレースから取得できます。

于 2012-06-26T06:47:12.773 に答える
0

これは、変数を初期化または割り当てていないことを意味します。デバッガーは具体的にどの変数を通知する必要があります。それをよく見てください。次に、すでに初期化されている (= new Class()) か、割り当てられている (= インスタンス) ことを確認するだけです。

この質問をご覧になることをお勧めします。

于 2012-06-26T06:46:54.117 に答える