【发布时间】:2010-07-28 21:19:48
【问题描述】:
我正在将 Web 表单插入数据库,因此使用参数化查询。我有一个 CheckBoxList。如何迭代 CheckBoxList,为每个检查的事物(多对多)创建一个插入语句,并保持此参数化并一举执行?
我现在有这个:
string query = "INSERT INTO resources (url, submitted_by, author_name) VALUES (@url, @submitted_by, @author_name);";
foreach (ListItem li in CheckBoxList1.Items)
{
if (li.Selected = true)
{
query += "; INSERT INTO ";
}
}
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@url", TextBox1.Text);
cmd.Parameters.AddWithValue("@submitted_by", TextBox2.Text);
cmd.Parameters.AddWithValue("@author_name", TextBox3.Text);
try
{
conn.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Added to database.";
}
如您所见,它尚未完成。有什么建议吗?
【问题讨论】:
-
每个勾选的项目需要为一组
url, submitted, author生成插入? -
@tzaman:不,每个选中的项目都需要创建一个这样的 INSERT 语句:
INSERT INTO phones_resources (phone_id, resource_id) VALUES (@phone_id, @resource_id);。 -
好的。那么,给定一个
ListItem,你从哪里得到相关的phone_id, resource_id? -
啊,实际上我没有意识到 resource_id 会是第一次插入的结果,所以无论如何我都必须先执行那个。我想我只需要为这些创建一个独特的 SQLCommand。谢谢。
-
嗯,你还是可以一口气搞定所有的ListItem,我来写点东西。
标签: c# tsql parameterized