0

必要なコントロールを動的に作成します
ここにコードがあります 

public void cmdButton1_OnClick(object sender, EventArgs e)
{

        Label myLabel = new Label();
        myLabel.ID = "lblNameL" + i.ToString();
        myLabel.Text = "Трите имена на латиница ";
        TextBox myTextBox1 = new TextBox();
        myTextBox1.ID = "txtNameL" + i.ToString();
        Page.FindControl("form1").Controls.Add(myLabel);
        Page.FindControl("form1").Controls.Add(myTextBox1);

        Label mylabel2 = new Label();
        mylabel2.ID = "lblNameK" + i.ToString();
        mylabel2.Text = "Трите имена на кирилица";
        TextBox myTextBox2 = new TextBox();
        myTextBox2.ID = "txtNameK" + i.ToString();
        Page.FindControl("form1").Controls.Add(mylabel2);
        Page.FindControl("form1").Controls.Add(myTextBox2);
}

そして、ここでSQLクエリを実行して、テキストボックスに書き込まれたものtxbNameKをテーブルTouristに挿入できるようにします。例外は行にありますcmd.Parameters.add

public void cmdInsert_OnClick(object sender, EventArgs e)
{

        TextBox tx888 = (TextBox)FindControl("txtNameK" + i.ToString());
        TextBox tx99 = (TextBox)FindControl("txtNameL" + i.ToString());

        string insertSQL = "INSERT INTO Tourist ( Name_kir, Name_lat) VALUES (@Name_kir, @Name_lat, )";

        string connectionString = "Data Source = localhost\\SQLExpress;Initial Catalog=Pubs;Integrated Security=SSPI";
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand(insertSQL, con);
        cmd.Parameters.AddWithValue("@Name_kir",tx888);
        cmd.Parameters.AddWithValue("@Name_lat", tx99);

        int added = 0;
        try
        {
            con.Open();
            added = cmd.ExecuteNonQuery();
            lblResult.Text = added.ToString() + "records added";

        }
        catch (Exception ex)
        {
            lblResult.Text = ex.Message;
        }
        finally
        {
            con.Close();

        }
    }
}
4

2 に答える 2

1

2つのこと:

TextBox tx888 = (TextBox)FindControl("txtNameK" + i.ToString());
TextBox tx99 = (TextBox)FindControl("txtNameL" + i.ToString());
if(tx888 == null)
    戻る;
if(tx99 == null)
    戻る;

上記は、texboxがnullかどうかを確認します。もう1つは次のとおりです。

cmd.Parameters.AddWithValue("@Name_kir",tx888.Text);
cmd.Parameters.AddWithValue("@Name_lat", tx99.Text);
于 2012-11-21T13:15:11.670 に答える
0

null オブジェクトが任意の値にアクセスしようとすると、常にオブジェクト参照例外が発生します。例えば..

以下のコードは正常に動作します。

Exception ex = new Exception()
Textbox1.Text = ex.Message;

以下のコードは例外をスローします

Exception ex= null;    //one and the same thing

Textbox1.Text = ex.Message;     //Object reference not set....exception will be raised since ex is null

これがあなたのコードで起こっていることです。ブレークポイントを配置してデバッグしてみてください。ベスト プラクティスとして、Prashant が提案するように、null のオブジェクトを常にチェックしてください。

于 2012-11-21T13:23:22.187 に答える