我的代码应该是从一个模块中获取所有的“课程名称”,基于所选择的学校。
例如,生物学院有“生物化学”和“海洋生物学”模块。为了在计算中使用,我需要同时选择这两个参数。
目前,当代码运行时,它只需要第一个模块,即“生物化学”,但我需要它来选择所有的模块。
有人能帮上忙吗?
Dim courseSelectCom As New SqlCommand("SELECT course_name FROM course where school= '%"schoolSelect & "' ", _
connection)发布于 2013-04-17 20:09:42
对查询要做的第一件事是使用参数化查询。
这将避免Sql Injection和解析问题。
然后,您应该解释为什么在SchoolSelect前面使用通配符%。
你是否有许多类型的学校都以相同的后缀结尾,并且你想检索所有这些学校吗?
最后,应该使用DataReader循环遍历返回的数据,或者使用DataAdapter填充DataTable。
所以总结一下
Dim sb = new StringBuilder()
Using connection = New SqlConnection("your_con_string_here")
connection.Open()
Dim courseSelectCom = New SqlCommand("SELECT course_name FROM course where school=@schoolName", connection)
courseSelectCom.Parameters.AddWithValue("@schoolName", SchoolSelect.Text)
Dim reader = courseSelectCom.ExecuteReader()
while reader.Read()
sb.AppendLine(reader("course_name")) ' or add to some kind of list to reuse'
End While
End Using
Console.WriteLine(sb.ToString())如果希望将数据存储在DataTable中,则将DataReader循环替换为
Dim dt = New DataTable()
Dim da = New SqlDataAdapter(courseSelectCom)
da.Fill(dt)并且您有一个DataTable对象可用于绑定到DataGridView、列表框或其他任何对象。
发布于 2013-04-17 19:54:41
您使用什么来执行该命令?如果你使用ExecuteScalar,你只能得到第一个结果。使用ExecuteReader并通读,或使用DataAdapter并用它填充DataSet。
发布于 2013-04-17 19:56:38
Dim courseSelectCom As New SqlCommand("SELECT course_name FROM course where school=@School", _connection)
courseSelectCom.Parameter.Add("@School", SqlDbType.VarChar).Value = SchoolSelect.TextSchoolSelect是从中选择学校的文本框
https://stackoverflow.com/questions/16059081
复制相似问题