WinForm中从SQLite数据库获取数据显示到DataGridView

1.关于Sqlite  

  Sqlite是一款开源的、适合在客户端和嵌入式设备中使用的轻量级数据库,支持标准的SQL。

  不像SqlServer或Oracle的引擎是一个独立的进程、通过TCP或命名管道等与程序进行通信,SQLite却是作为程序的一个部件、一个构成部分,使用Sqlite的方式就是直接在程序中进行API调用。

2.Sqlite资源链接

       Sqlite官网:可以从官网下载源码、或下载已经编译好的二进制版本。支持的系统包括:Linux、MacOS、Windows、.NET。

3.在.NET中使用Sqlite

  从官网下载.NET版本的Sqlite,其主要包括两个dll:SQLite.Interop.dll、System.Data.SQLite.dll。

(1)System.Data.SQLite.dll是一个标准的托管dll,我们可以直接在.NET项目中引用并使用它,就像使用.NET自带的System.Data命名空间中的各个对象一样。

(2)SQLite.Interop.dll是一个非托管的dll,是Sqlite引擎核心,我们需要将其拷贝到运行目录下,在运行时,它会被System.Data.SQLite.dll调用。
 

4.Winform中使用SQLite

(1)可使用northwindEF.db测试数据库,也可以新建一个数据库。
(2)Winform界面:

使用ComboBox:cboTables加载数据库表。

点击OK,查询选择的表中的详细信息显示到DataGridView:grdDetail。
 
(3)代码说明
Step 1. 添加引用System.Data.SQLite. 注意需要复制SQLite.Interop.dll至运行目录下;
Step 2. 定义变量
public partial class Form1 : Form
    {
        SQLiteConnection mConn;
        SQLiteDataAdapter mAdapter;
        DataTable mTable;
        public Form1()
        {
            InitializeComponent();
        }
  }

Step 3. 连接数据库,并查找数据库中表显示到cboTables        

private void Form1_Load(object sender, EventArgs e)
        {
            //连接数据库.
            string mDbPath = Application.StartupPath + "/northwind.db";
            //如果数据库不存在,则自动创建.
            mConn = new SQLiteConnection("Data Source=" + mDbPath);
 
           //打开数据库文件.
            mConn.Open();
 
            //创建表[Test Table].
            // id        - Unique Counter - Key Field (Required in any table)
            // FirstName - Text
            // Age       - Integer
            using (SQLiteCommand mCmd = new SQLiteCommand
                ("CREATE TABLE IF NOT EXISTS [Test Table] " +
                 "(id INTEGER PRIMARY KEY AUTOINCREMENT, 'FirstName' TEXT, 'Age' INTEGER);",
                 mConn))
            {
                mCmd.ExecuteNonQuery();
            }
           
            
            //获取数据库中表.
            //表 "Tables"中字段 "TABLE_NAME" 包含所有表名信息.
            using (DataTable mTables = mConn.GetSchema("Tables")) // "Tables"包含系统表详细信息;
            {
                for (int i = 0; i < mTables.Rows.Count; i++)
                {
                    cboTables.Items.Add(mTables.Rows[i].ItemArray[mTables.Columns.IndexOf("TABLE_NAME")].ToString());
                }
                if (cboTables.Items.Count > 0)
                {
                    cboTables.SelectedIndex = 0; // 默认选中第一张表.
                }
            }
           
        }

 

Step 4. 选择cboTables中表名,点击Ok,获取该表详细信息显示到grdDetail中。
     
private void btnOk_Click(object sender, EventArgs e)
        {
            mAdapter = new SQLiteDataAdapter("SELECT * FROM [" + cboTables.Text + "]", mConn);
            mTable = new DataTable(); // Don't forget initialize!
            mAdapter.Fill(mTable);
 
            // 绑定数据到DataGridView
            grdDetail.DataSource = mTable;
        }

 

posted @ 2017-08-23 15:32  Joan2016  阅读(10634)  评论(0编辑  收藏  举报