vb.net 如何将 SQLite 数据库读入 DataGridView 对象

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23277223/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 17:27:51  来源:igfitidea点击:

How to read a SQLite database into a DataGridView object

vb.netsqlitesystem.data.sqlite

提问by UWPLTD

I am writing a VB program using VS 2013. I am using the methods in System.Data.SqLite.dll from SQLite.org. I can read my database fine into a ListBox object. I am posting my code that I am using for this. What I would like to do is send this data to a DataGridView object. I am having no luck doing it correctly.

我正在使用 VS 2013 编写 VB 程序。我正在使用 SQLite.org 中 System.Data.SqLite.dll 中的方法。我可以很好地将我的数据库读入 ListBox 对象。我正在发布我为此使用的代码。我想做的是将此数据发送到 DataGridView 对象。我没有运气正确地做到这一点。

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim f As New OpenFileDialog
    f.Filter = "SQLite 3 (*.db)|*.db|All Files|*.*"
    If f.ShowDialog() = DialogResult.OK Then
        Dim SQLconnect As New SQLite.SQLiteConnection()
        Dim SQLcommand As SQLiteCommand
        SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
        SQLconnect.Open()
        SQLcommand = SQLconnect.CreateCommand
        SQLcommand.CommandText = "SELECT address, date, body FROM sms ORDER BY date DESC"
        Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()

        lst_records.Items.Clear()

        While SQLreader.Read()
            lst_records.Items.Add(String.Format("address = {0}, date = {1}, body = {2}",      SQLreader(0), SQLreader(1), SQLreader(2)))
         End While

        SQLcommand.Dispose()
        SQLconnect.Close()
    End If
End Sub

回答by

I found a few similar questions on StackOverflow, but not close enough to post. Sorry to send you to another website. http://cplus.about.com/od/howtodothingsinc/ss/How-To-Use-Sqlite-From-Csharp_2.htmThis is a copy/paste from the above link. The answer is to use the SQLLiteConnection and SQLLiteDataAdapter. Below is in C#, but easily convertable to VB.

我在 StackOverflow 上发现了一些类似的问题,但还不够贴切。很抱歉将您发送到另一个网站。 http://cplus.about.com/od/howtodothingsinc/ss/How-To-Use-Sqlite-From-Csharp_2.htm这是上述链接的复制/粘贴。答案是使用 SQLLiteConnection 和 SQLLiteDataAdapter。下面是在 C# 中,但很容易转换为 VB。

private void btngo_Click(object sender, EventArgs e)
 {
     const string filename = @"C:\cplus\tutorials\c#\SQLite\About.sqlite";
     const string sql = "select * from friends;";
     var conn = new SQLiteConnection("Data Source=" + filename + ";Version=3;") ;
     try
     {
       conn.Open() ;
       DataSet ds = new DataSet() ;
       var da = new SQLiteDataAdapter(sql, conn) ;
       da.Fill(ds) ;
       grid.DataSource = ds.Tables[0].DefaultView;
     }
     catch (Exception)
     {
 throw;
     }
 }

回答by Joel Coehoorn

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim f As New OpenFileDialog
    f.Filter = "SQLite 3 (*.db)|*.db|All Files|*.*"
    If f.ShowDialog() <> DialogResult.OK Then Exit Sub

    lst_records.Items.Clear()
    Using SQLconnect As New SQLiteConnection("Data Source=" & f.FileName & ";"), _
          SQLcommand As New SQLiteCommand("SELECT address, date, body FROM sms ORDER BY date DESC")

        SQLconnect.Open() 
        Using SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
            MyDataGridView.DataSource = SQLreader       
        End Using
    End Using
End Sub

回答by Bagoes

Function getData(ByVal sql As String) As DataTable

   OpenConnection()
   SQLcommand = SQLconnect.CreateCommand
   SQLcommand.CommandText = sql
   Dim dataAdapter As New SQLiteDataAdapter(SQLcommand)
   Dim table As New DataTable
   dataAdapter.Fill(table)
   CloseConnection()
   Return table       
End Function

On Main MyDataGrid.DataSource = getData("select * from tb_employee")

在 Main MyDataGrid.DataSource = getData("select * from tb_employee")

回答by fedeteka

This works for me:

这对我有用:

    Dim conn = New SQLiteConnection("Data Source=MyDataBaseName.sqlite;Version=3")

    Try
        Using (conn)
            conn.Open()

            Dim sql = "SELECT * FROM table"

            Dim cmdDataGrid As SQLiteCommand = New SQLiteCommand(sql, conn)

            Dim da As New SQLiteDataAdapter
            da.SelectCommand = cmdDataGrid
            Dim dt As New DataTable
            da.Fill(dt)
            DataGridView1.DataSource = dt

            Dim readerDataGrid As SQLiteDataReader = cmdDataGrid.ExecuteReader()

        End Using

    Catch ex As Exception
        MsgBox(ex.ToString())
    End Try

回答by Dennis Kassel

Using Microsoft SQL you would fill the result to a DataTable by passing it to an instance of SQLDataAdapter. Once the data table is filled, you can assign it to the DataGridView as a data source. The benefit of this is that the DataGridView can automatically update its content.

使用 Microsoft SQL,您可以通过将结果传递给 SQLDataAdapter 实例来将结果填充到 DataTable。数据表填好后,就可以把它作为数据源分配给DataGridView。这样做的好处是 DataGridView 可以自动更新其内容。

I have no experience with using SQL Lite, but I expect that its API is similar.

我没有使用 SQL Lite 的经验,但我希望它的 API 是相似的。

Dim table As New DataTable()
Dim dataAdapter As New SqlClient.SqlDataAdapter(cmd)

dataAdapter.Fill(table)
dataGridView.DataSource = table