我還不是最擅長使用 SQL,但我正在嘗試獲取一個逗號分隔的串列以轉換為我的資料庫中的多行。例如,我正在使用 Winforms,在我的文本框中我將輸入“a,b,c”
我希望我的桌子看起來像這樣:

但到目前為止,我只實作:

這是我想要的一些示例代碼:
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i )
{
listBox1.SetSelected(i, true);
}
string items = "";
StringBuilder sb = new StringBuilder();
foreach (var currentItem in listBox1.SelectedItems)
{
sb.Append(currentItem ",");
}
items = sb.ToString();
textBox1.Text = items;
}
SQL
string strsql;
strsql = @"UPDATE [table].[dbo].[Departments]
SET [dep_Department] = @department
WHERE [dep_Username] = @username;
IF @@ROWCOUNT = 0
INSERT INTO [table].[dbo].[Departments] ([dep_Username],[dep_Department])
VALUES (@username, @department);";
SqlConnection conn = new SqlConnection(@"coneectionstring;");
var cmd = new SqlCommand(strsql, conn);
cmd.Parameters.Add("@department", SqlDbType.NVarChar, 40).Value = department;
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 60).Value = username;
conn.Open();
cmd.ExecuteNonQuery();
uj5u.com熱心網友回復:
您只需要拆分部門名稱變數以提取單個部門,然后回圈提取的部門。
但首先,如果您需要為每個部門/用戶對寫入一條記錄,那么您需要洗掉該用戶的所有記錄,然后再讀取它們。所有這些都在一個事務中。當然,我假設部門名稱包含要為特定用戶添加的所有部門。
所以我們有兩個sql命令文本,第一個洗掉記錄,第二個添加記錄。SqlCommand 及其第一個引數是立即構建的,該命令用于洗掉記錄,然后我們可以更改命令文本并在回圈外添加部門名稱引數,在回圈內您可以只更新@department引數與當前值。
try
{
string clear_recs = @"DELETE FROM [Departments]
WHERE [dep_Username] = @username";
string strsql = @"INSERT INTO [table].[dbo].[Departments]
([dep_Username],[dep_Department])
VALUES (@username, @department);";
using(SqlConnection conn = new SqlConnection(@"coneectionstring;"));
conn.Open();
using(SqlTransaction tr = conn.BeginTransaction());
using(SqlCommand cmd = new SqlCommand(clear_recs, conn, tr));
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 60).Value = username;
cmd.ExecuteNonQuery();
// Change the commandtext and create the parameter
// but do not set the value for now.
cmd.CommandText = strsql;
cmd.Parameters.Add("@department", SqlDbType.NVarChar, 40);
// Split, then loop and update/insert
// using the same SqlCommand.
string[] deps = department.Split(',');
foreach(string dep in deps)
{
cmd.Paramenters["@department"].Value = dep;
cmd.ExecuteNonQuery();
}
// All the write are effectively done here when we commit the transaction
tr.Commit();
}
catch(Exception ex)
{
// Log the errors. If we reach the exception handler, the
// transaction is automatically rolled back and you can try again.
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/509977.html
標籤:C#sql服务器表格
上一篇:如何從WinForms訪問WPF控制元件的方法和屬性?
下一篇:如何動態地將按鈕添加到組框中?
