zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/wq352/p/7418436.html
Copyright © 2011-2022 走看看