我有一个gridview,其中我在check_changed
上插入了一个复选框,即使我编写以下代码来获取问题ID的值,如图所示也显示文本框中的值,但是当我在SQL中使用这些字符串时:
Select * from IssueBook Where IssueId IN (values)
它显示在check_changed
上将varchar转换为数字的错误我写了这些代码我已经采用了IssueId(数字)
Protected Sub CheckBox1_CheckedChanged1(ByVal sender As Object, ByVal e As System.EventArgs)
Dim x As String = ""
For Each row As GridViewRow In GridView1.Rows
Dim cb As CheckBox = row.FindControl("checkbox1")
If cb IsNot Nothing AndAlso cb.Checked Then
If x <> "" Then
x += ","
End If
x += row.Cells(1).Text
End If
Next
RwId.Text = x
Session("SelctdIsuedBokNo") = RwId.Text
在数据表中我使用了数值。
如何将上述代码转换为整数,例如4,5,6,
使用逗号分隔符?
答案 0 :(得分:1)
IN语句需要逗号分隔值列表,而不是带有这些值的“字符串”。
您应该创建一个动态SQL并将其传递给您的Command(SqlCommand或您用于执行SQL的任何方法)...类似于:(如果您使用的是SqlClient)
SqlCommand cmd = new SqlCommand(String.Format("Select * from IssueBook Where IssueId IN ({0})", values), your_connection);
希望它有所帮助。
答案 1 :(得分:0)
如何使用Convert.ToInt32();
功能
答案 2 :(得分:0)
你可以使用数组:
http://msdn.microsoft.com/en-us/library/vstudio/wak0wfyt.aspx
并使用
将值转换为Integer Integer.TryParse
答案 3 :(得分:0)
尝试使用
Integer.Parse()
或
Integer.TryParse()
希望它有效。
答案 4 :(得分:0)
您无法将字符串“4,5,6”转换为单个整数值。
最好的办法是将选择更改为接受varchar值。
答案 5 :(得分:0)
在这种情况下,为了避免sql注入,只要你的ID(Cells(1).Text值)是整数,你应该从单元格中收集你的ID并在整数列表中输入安全,然后用逗号将它们连接起来最后一个字符串
我已相应调整了您的代码。
Protected Sub CheckBox1_CheckedChanged1(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Values As List(Of Integer)'your integer list of IDs
For Each row As GridViewRow In GridView1.Rows
Dim cb As CheckBox = row.FindControl("checkbox1")
If cb IsNot Nothing AndAlso cb.Checked Then
Values.Add(Integer.convert(row.Cells(1).Text))'add the ID
End If
Next
RwId.Text = String.Join(",", Values)'pull out the list into a comma delimited string eg "2,45,67,87"
Session("SelctdIsuedBokNo") = RwId.Text