我建议这样做:
假设这个标记:
所以我们拖入了一个按钮和一个gridview。
现在,双击按钮,我们得到/拥有这个代码存根:
Imports System.Data.SqlClient
Public Class HotelGrid
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Sub LoadGrid()
Using cmdSQL As New SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
New SqlConnection(My.Settings.TEST3))
cmdSQL.Connection.Open()
GridView1.DataSource = cmdSQL.ExecuteReader
GridView1.DataBind()
End Using
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
LoadGrid()
End Sub
End Class
请注意这里的一些重要事项。
首先,我非常推荐一般的 sql 数据拉取,使用 sql 命令对象。
为什么?
好吧,命令对象有:
A place to hold/have/set the sql (sql command text)
A connection object - no need to create a separate one
A data reader - no need to create a separate one
换句话说,sql 命令对象具有所有三个基本位和部分来提取数据。
我们经常想说某种记录集(数据表),所以我们可以这样做:
dim MyTable as new DataTable
Using cmdSQL As New SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
New SqlConnection(My.Settings.TEST3))
cmdSQL.Connection.Open()
MyTable.load(cmdSQL.ExecuteReader)
GridView1.DataSource = MyTable
GridView1.DataBind()
End Using
所以请注意在上面我们是如何创建一个数据表对象的。然后可以将该数据表与 for/each 进行交互。您甚至可以编辑该表中的数据,或者如上所示,用数据加载数据表 - 然后将其分配给网格视图。
因此,结果输出是这样的:
仅供参考:在我的示例中,我使用了 sqlclient 提供程序。在您的情况下,您使用的是 ODBC 提供程序。所以上面的代码是完全相同的,但是现在使用 ODBC,我们得到这个:
因此,您使用 ODBC 代替 ado.net(sql 客户端)。所以你有一个
Imports System.Data.Odbc
因此我们的负载网格代码可能/将是这样的:
Sub LoadGrid2()
Using cmdSQL As New OdbcCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
New OdbcConnection(My.Settings.TEST3ODBC))
cmdSQL.Connection.Open()
GridView1.DataSource = cmdSQL.ExecuteReader
GridView1.DataBind()
End Using
End Sub
因此,请注意代码实际上是如何“相同”的,但只是使用不同的提供程序(在您的情况下为 ODBC)。
您仍然可以声明并使用“数据表”来保存查询结果。