首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择1列中的所有数据

选择1列中的所有数据
EN

Stack Overflow用户
提问于 2013-04-17 19:43:29
回答 4查看 198关注 0票数 0

我的代码应该是从一个模块中获取所有的“课程名称”,基于所选择的学校。

例如,生物学院有“生物化学”和“海洋生物学”模块。为了在计算中使用,我需要同时选择这两个参数。

目前,当代码运行时,它只需要第一个模块,即“生物化学”,但我需要它来选择所有的模块。

有人能帮上忙吗?

代码语言:javascript
复制
  Dim courseSelectCom As New SqlCommand("SELECT course_name FROM course where school= '%"schoolSelect & "' ", _
                                connection)
EN

回答 4

Stack Overflow用户

发布于 2013-04-17 20:09:42

对查询要做的第一件事是使用参数化查询。

这将避免Sql Injection和解析问题。

然后,您应该解释为什么在SchoolSelect前面使用通配符%

你是否有许多类型的学校都以相同的后缀结尾,并且你想检索所有这些学校吗?

最后,应该使用DataReader循环遍历返回的数据,或者使用DataAdapter填充DataTable。

所以总结一下

代码语言:javascript
复制
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循环替换为

代码语言:javascript
复制
    Dim dt = New DataTable()
    Dim da = New SqlDataAdapter(courseSelectCom)
    da.Fill(dt)

并且您有一个DataTable对象可用于绑定到DataGridView、列表框或其他任何对象。

票数 1
EN

Stack Overflow用户

发布于 2013-04-17 19:54:41

您使用什么来执行该命令?如果你使用ExecuteScalar,你只能得到第一个结果。使用ExecuteReader并通读,或使用DataAdapter并用它填充DataSet。

票数 0
EN

Stack Overflow用户

发布于 2013-04-17 19:56:38

代码语言:javascript
复制
Dim courseSelectCom As New SqlCommand("SELECT course_name FROM course where school=@School", _connection)

courseSelectCom.Parameter.Add("@School", SqlDbType.VarChar).Value = SchoolSelect.Text

SchoolSelect是从中选择学校的文本框

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16059081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档