我目前工作的地方我一直在問下列要求在WPF工作項目:如何使用C#Foreach循環將記錄插入數據庫?
- 允許用戶能夠在一個堆疊面板
- 保存添加更多的文本框在 在每個文本作爲新記錄用戶輸入(如串/ nvarchar的)數據庫
這背後的想法是,如果我們收到多個包,每票貨物通常分成多個位置,我們」 d需要位於每個組件所在的位置。
我已經在下面包含了我的代碼樣本,它的準系統可能不僅僅是將要插入的'Records'字段。我將RecordID字段設置爲身份字段,因此我不擔心聲明ID字段。它不包含在示例中,但每條記錄都鏈接到ShipmentID。
我會很感激,因爲我一直有實現它的麻煩(和已經碰了壁與我的研究)作爲我的代碼任何幫助跑入:
「System.InvalidOperationException」發生在System.Data .dll'與CommandText屬性未初始化錯誤,當我嘗試我嘗試保存記錄。不幸的是,我發現只有一些模糊的小技巧可以解決我的問題(或者我在研究中很糟糕)。
private void StackAddTB(object sender, RoutedEventArgs e)
{
TextBox NewBox = new TextBox() { Margin = new Thickness(0, 10, 0, 0), Width = 100, Height = 20 };
StackBoxes.Children.Add(NewBox);
}
private void SaveMulti(object sender, RoutedEventArgs e)
{
string CStr = Manifesting.Properties.Settings.Default.PSIOpsSurfaceCS;
SqlConnection Connection = new SqlConnection(CStr);
string Query = "INSERT INTO TestLoop (Record), Values (Record)";
SqlCommand Command = new SqlCommand(Query, Connection)
foreach (TextBox TestTB in StackBoxes.Children.OfType<TextBox>())
{
try
{
Connection.Open();
Command = Connection.CreateCommand();
Command.Parameters.AddWithValue("@Record", TestTB.Text);
Command.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
Connection.Close();
}
}
編輯:我已經通過通過文本框問題循環檢查(按照先生紅魔評論),雖然我已經找到了一些東西從其他崗位有用它不細講如何這些值保存在數據庫中。
[Loop Through Textboxes](http://stackoverflow.com/questions/4863051/loop-through-textboxes) –
而不是'Connection.Open()'和所有其他所需的連接代碼使用SqlConnection對象的實例'SqlConnection.Open();'你也應該在循環之前打開連接,然後用'using()'語句包裝你的連接,你不必手動關閉它。 – prospector
額外的逗號。字符串查詢=「INSERT INTO TestLoop(記錄) - >,< - 值(記錄)」; –