我还不是最擅长使用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();
1条答案
按热度按时间pbossiut1#
您只需要拆分 departmentname 变量以提取单个部门,然后循环提取的部门。
但首先,如果需要为每个部门/用户对写入一条记录,则需要删除该用户的所有记录,然后重新写入它们。所有这些都在事务中完成。当然,我假定 departmentname 包含要为特定用户添加的所有部门。
所以我们有两个sql命令文本,第一个删除记录,第二个添加记录。SqlCommand和它的第一个参数立即生成,命令用于删除记录,然后我们可以更改命令文本,并在循环外部添加部门名称参数,在循环内部,您可以用当前值更新 @department 参数。