Query Access Visual Basic



我试图找出如何使用visual basic查询access db,但我正在寻找关于这实际上是如何工作的一点解释。

我感到困惑的是,我陈述了一个命令SELECT * FROM PI (PI作为表),但在它的正下方,我说的是TextBox1.Text = theDataTable.Rows(0).Item(1) .

我只是想知道为什么我有一个查询命令,然后是一个单独的命令,要到指定的行和项目....任何帮助都非常感激!

Imports System.Data.OleDb
Public Class Form1
Dim theConnectionString As New OleDbConnection
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    txtSQL.Clear()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    theConnectionString.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersMarc WilsonDocumentsFiddleFuckDB.accdb"
    theConnectionString.Open()
    Dim theDataSet As New DataSet
    Dim theDataTable As New DataTable
    theDataSet.Tables.Add(theDataTable)
    Dim theDataAdapter As New OleDbDataAdapter
    theDataAdapter = New OleDbDataAdapter("SELECT * FROM PI", theConnectionString)
    theDataAdapter.Fill(theDataTable)
    TextBox1.Text = theDataTable.Rows(0).Item(1)

    theConnectionString.Close()
    End Sub
End Class

像这样

"SELECT * FROM PI Where FieldName = '" & TextBox1.Text & "'"

假定您的字段类型不是数字

由于您使用的是ADO。. NET DataTable -该对象由Rows集合组成,而每一行又由Items集合组成。所以为了得到一个特定的值你需要使用

Table.Rows(X)(Y)

符号。即使查询返回单个值,也可以使用这种方法。特别是查看您的代码和Items(1),看起来您的查询至少返回2列。

如果您只对单个值感兴趣,请考虑在查询中指定单个列名,确保它返回单行(例如通过在查询中添加WHERE子句)并使用ExecuteScalar ADO。. NET命令,与Fill和DataTable不同,它只返回单个值。

不是100%确定我理解这个问题,但希望这有助于:

查询命令是从数据库中的表中获取所有记录。Rows()和Item()方法从特定记录中获取特定字段(在本例中是第一个记录的第二个字段)。

TextBox的Text属性不能单独显示整个表:DataTable是一个相当复杂的数据结构。文本框需要一个字符串(或类似的东西)。

SELECT * FROM PI告诉数据库引擎应该从磁盘上存在的底层数据库表中检索哪些数据。

你正在使用的DataTable类,它表示数据在内存: DataAdapter类从磁盘读取数据(使用SQL语句)并将其复制到内存中,然后使用Rows(0).Item(1)命令来获取已经在内存中的数据的副本。

另一种选择是使用DataReader,它更直接,通常更简单。在你的情况下,我不明白你为什么要使用DataTable类,因为DataReader会很适合你。

最新更新