2013-07-09 59 views
0

我在我的網站上有一個listbox項目,selectionmode爲「multilple」。我想在我的sql服務器中將所有選擇的項目插入表格中的一列,當我點擊提交按鈕時。如何在sql服務器中的表格單元格中插入多個值

這是我的listbox項目。

<asp:TableCell> 
    <asp:ListBox ID="lbLanguagesKnown" runat="server" Height="217px" 
     SelectionMode="Multiple"> 
     <asp:ListItem Selected="True" Value="-1">-Select Languages-</asp:ListItem> 
     <asp:ListItem Value="1">Arabic</asp:ListItem> 
     <asp:ListItem Value="2">Bengali</asp:ListItem> 
     <asp:ListItem Value="3">English</asp:ListItem> 
     <asp:ListItem Value="4">German</asp:ListItem> 
     <asp:ListItem Value="5">Hindi</asp:ListItem> 
     <asp:ListItem Value="6">Japanese</asp:ListItem> 
     <asp:ListItem Value="7">Javanese</asp:ListItem> 
     <asp:ListItem Value="8">Mandarin</asp:ListItem> 
     <asp:ListItem Value="9">Others</asp:ListItem> 
     <asp:ListItem Value="10">Portuguese</asp:ListItem> 
     <asp:ListItem Value="11">Russian</asp:ListItem> 
     <asp:ListItem Value="12">Spanish</asp:ListItem> 
    </asp:ListBox> 
</asp:TableCell> 

這怎麼可能?請幫忙。

+2

僅供參考,表格包含*列*,而不是*格*。單元格可在電子表格和監獄中找到。 –

+0

對不起。我糾正了它。 – Tannya

+0

其實我有很多其他的控件,如文本框,日曆控件,文件上傳等。我有一個提交按鈕。點擊,我想插入所有這些值到用戶表。由於列表框項目的數量很多,所以我被其他項目卡住了。 – Tannya

回答

0

結合的所有值,並將它們植入一列是不是一個好主意。 ..如上所述,它甚至不符合數據標準化的1NF條件,結果是磁盤空間使用效率低下,查詢速度慢(根據我的理解,從這樣的表中得到結果真的很麻煩)。但是,如果你仍然想這樣做,你可以嘗試將值與一個分隔符(,或/)連接起來,然後插入它們,以便在稍後階段可以將其拆分出來。

+0

非常感謝。 – Tannya

5

你可能不想這樣做,因爲你甚至會打破第一個正常形式。相反,將關係建模爲多對多可能更有意義。

在這種情況下,你將有一個Languages表,(例如)User表,然後junction table(例如LanguagesKnown),它使用兩個外鍵在結表的每一行許多語言鏈接到許多用戶。

+1

+1,但我不認爲OP在這一點上接近於能夠設計數據庫。 –

2

你可以使用一個簡單的循環:

string sql = "INSERT INTO dbo.Language VALUES(@languageID, @languageName);"; 
using (var con = new SqlConnection(yourConnectionString)) 
using(var cmd = new SqlCommand(sql, con)) 
{ 
    con.Open(); 
    foreach (ListItem item in lbLanguagesKnown.Items) 
    { 
     cmd.Parameters.Clear(); 
     if (item.Selected) 
     { 
      cmd.Parameters.AddWithValue("@languageID", int.Parse(item.Value)); 
      cmd.Parameters.AddWithValue("@languageName", item.Text); 
      int insertedCount = cmd.ExecuteNonQuery(); 
     } 
    } 
} 

我已經使用SQL參數以防止SQL注入。 using -statement用於確保連接儘快關閉(即使發生異常)。

但是,要求沒什麼意義。爲什麼當用戶選擇它的一部分時,你想插入masterdata。聽起來好像你實際上想插入到不同的表格中,該表格鏈接到語言表格。

例如:

表1:UserLanguagesUserID + LanguageID

表2:Languages與上述模型

+0

我想只將用戶選擇的值插入到表中。另外還有許多其他控件,如接受用戶名,密碼,DOB,文件上傳和下載控件的文本框。我在頁面上有一個提交按鈕。當我點擊那個,我想插入所有這些值到用戶表。 – Tannya

相關問題