2013-10-10 59 views
0

我有檢查清單這樣插入的CheckBoxList值DB

<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. 

請任何一個指導我如何插入唯一入選弗吉尼亞州將複選框列表提交給數據庫。

+0

你在哪裏得到這個錯誤? –

+0

on this line'oda.InsertCommand.CommandText .....' – user2695435

+0

調試你的代碼並讓我知道你在li.value中獲得了正確的值...... –

回答

1

您已創建新命令,但未將其與適配器關聯。

所以,你需要添加此到適配器中創建的命令:

oda.InsertCommand = new OleDbCommand(); 

這將意味着你可以擺脫線:

OleDbCommand cmd = new OleDbCommand(); 
0

@賈斯汀 - 哈維右側, 但您不需要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(); 
    } 
}