我在vb.net上使用asp.net。我创建了2个列表框; lstselect和lstroles。列表框lstselect包含可添加到lstro中的所有可用角色。如何在存储过程运行时将已添加到lstro中的角色作为一个参数拉入我的数据库?
以下是我的列表框如何共享角色的代码:
Protected Sub btnRight_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRight.Click
If lstselect.SelectedIndex <> -1 Then
lstroles.Items.Add(lstselect.SelectedItem.Text)
lstselect.Items.Remove(lstselect.SelectedItem.Text)
End If
End Sub
Protected Sub btnLeft_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLeft.Click
If lstroles.SelectedIndex <> -1 Then
lstselect.Items.Add(lstroles.SelectedItem.Text)
lstroles.Items.Remove(lstroles.SelectedItem.Text)
End If
End Sub
谢谢!
答案 0 :(得分:0)
有两种方法可以做到:
1)从列表框中选择项目创建逗号分隔值。但这不是推荐的方法,因为您需要在存储过程中解析它。
string commaSeparatedParams = string.Join(",", myArray);
2)创建一个XML,每个Role都是一个Node。并将XML作为存储过程参数传递。大多数数据库支持轻松从XML检索数据。顺便说一句,您使用的是哪个数据库?
3)如果您使用的是MS SQL 2008,还可以使用Table-Valued Parameters
:http://msdn.microsoft.com/en-us/library/bb510489.aspx
但它仅推荐用于Bulk Insert类操作。我推荐的方法是XML,我想说。
答案 1 :(得分:0)
此处提供了使用表值参数的方法以及最佳实践建议: