0

このようなチェックリストがあります

<asp:CheckBoxList ID="CA" runat="server" DataSourceID="SqlDataSource1" 
        DataTextField="MNU_NAME" DataValueField="MNU_ID">
</asp:CheckBoxList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:DataConnectionString2 %>" 
        ProviderName="<%$ ConnectionStrings:DataConnectionString2.ProviderName %>" 
        SelectCommand="SELECT ID, MNU_ID, MNU_NAME, MNU_TAB FROM MENU_LIST WHERE (MNU_TAB = 'CA')" 
    </InsertParameters>
</asp:SqlDataSource>

そして、このようにCheckBoxlistの選択された値をDBに挿入しようとしています

OleDbDataAdapter oda = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
if (TextBox1.Text == null || TextBox1.Text == "")
{
    Response.Write("Enter Email");
}
foreach (ListItem li in CA.Items)
{
    if (li.Selected == true)
    {
        oda.InsertCommand.CommandText = "INSERT INTO USR_MNU(LNK_NAME,USR_EMAIL,ACTIVE) values('" + li.Value + "','" + TextBox1.Text + "',1)";
        oda.InsertCommand.Connection = con;
        oda.InsertCommand.Connection.Open();
        oda.InsertCommand.ExecuteNonQuery();
        oda.InsertCommand.Connection.Close();
    }
}

ボタンを押して値を挿入すると、このエラーが発生しました

Object reference not set to an instance of an object.

選択したチェック ボックス リストの値のみを DB に挿入する方法を教えてください。

4

2 に答える 2

1

新しいコマンドを作成しましたが、アダプターに関連付けていません。

したがって、アダプター内でコマンドを作成するには、これを追加する必要があります。

oda.InsertCommand = new OleDbCommand();

これは、次の行を削除できることを意味します。

OleDbCommand cmd = new OleDbCommand();
于 2013-10-10T09:22:28.017 に答える
0

@Justin-Harveyは正しいですが、DataAdapterは必要ありません(Database-DataSetを仲介するように設計されています)。DataAdapter を使用しないコードは次のとおりです。

OleDbCommand cmd = new OleDbCommand();
if (TextBox1.Text == null || TextBox1.Text == "")
{
    Response.Write("Enter Email");
}
foreach (ListItem li in CA.Items)
{
    if (li.Selected == true)
    {
        cmd.CommandText = "INSERT INTO USR_MNU(LNK_NAME,USR_EMAIL,ACTIVE) values('" + li.Value + "','" + TextBox1.Text + "',1)";
        cmd.Connection = con;
        cmd.Connection.Open();
        cmd.ExecuteNonQuery();
        cmd.Connection.Close();
    }
}
于 2013-10-10T09:29:08.703 に答える