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; }