Runtime独立运营的秘籍

作者: 数据库信息  发布:2019-11-28

目前手头上的一个.NET项目用到了Sqlite,这是我第一次接触和使用Sqlite,总体感觉还是非常不错的。这里把我使用Sqlite的经验跟大家分享一下。

1.关于Sqlite  

一.关于Sqlite  

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

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

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

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

2.Sqlite资源链接

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

  原始的Sqlite是没有一个向SqlServer企业管理器的可视化操作程序的,但是有个第三方开发的应用SqliteStudio非常不错,基本的建库、建表、编辑数据、导出数据等功能都支持得很好。SqliteStudio运行截图如下所示:

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调用。

 

图片 1

4.Winform中使用SQLite

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

(2)Winform界面:

图片 2

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

 

Sqlite资源链接:

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

(2)SqliteStudio:好用的Sqlite可视化管理器。

二.在.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调用。

三.让Sqlite脱离VC 运行时

  我们在项目开发完毕后测试的过程中发现,使用了Sqlite的客户端程序在某些机器上运行时会报错,如下所示:

  无法加载 DLL"SQLite.Interop.DLL";由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。(异常来自 HRESULT:0x800736B1)

本文由金沙澳门官网发布于数据库信息,转载请注明出处:Runtime独立运营的秘籍

关键词: 金沙澳门官网