C# SQLite数据库操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# SQLite数据库操作相关的知识,希望对你有一定的参考价值。

WinCE项目开发   VS2008

自己写的SQLite数据库管理类代码如下:

SQLiteManager.cs 

using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Reflection;

namespace TeachHMI
{
    public class SQLiteManager
    {
        public SQLiteManager(string DataBaseName,string DataTableName)
        {
            this.dbName = DataBaseName;
            this.dtName = DataTableName;
        }

        //数据库文件名
        string dbName;
        //数据表名
        string dtName;
        string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
        //数据库连接语句
        string ConnStr;
        //数据库连接
        public SQLiteConnection conn;
        //SQLiteCommand实例,用于对SQLite发出指令
        SQLiteCommand command;
        //SQLiteDataAdapter实例,用于将数据库数据填充至DataSet
        SQLiteDataAdapter adapter;
        //SQLiteDataReader实例,用于读取数据表中数据
        SQLiteDataReader reader;

        /// <summary>
        /// 数据库连接
        /// </summary>
        public void InitializeSQLite()
        {
            this.ConnStr = "Data Source=" + appPath + "\\" + dbName + ";Pooling=true;FailIfMissing=false";
            conn = new SQLiteConnection(ConnStr);
            //打开连接
            conn.Open();
        }

        /// <summary>
        /// 创建数据表
        /// </summary>
        /// <param name="CreateCommand"></param>
        public void CreateTable(string CreateCommand)
        {
            command = new SQLiteCommand(conn);
            command.CommandText = "CREATE TABLE IF NOT EXISTS " + dtName + CreateCommand;
            command.ExecuteNonQuery();
        }

        /// <summary>
        /// 执行SQL命令,返回受影响的行数
        /// </summary>
        /// <param name="Command">命令语句</param>
        public void ExeNonQueryCmd(string Command)
        {
            command = new SQLiteCommand(conn);
            command.CommandText = Command;
            command.ExecuteNonQuery();
        }

        /// <summary>
        /// 执行SQL命令,返回SQLiteDataReader
        /// </summary>
        /// <param name="Command"></param>
        /// <returns></returns>
        public SQLiteDataReader ExeReaderCmd(string Command)
        {
            command = new SQLiteCommand(conn);
            command.CommandText = Command;
            reader = command.ExecuteReader();  //返回类型为SQLiteDataReader
            return reader;
        }

        /// <summary>
        /// 填充DataSet
        /// </summary>
        /// <param name="ds"></param>
        public void DataFill(DataSet ds)
        {
            adapter = new SQLiteDataAdapter("SELECT * FROM " + dtName, conn);
            adapter.Fill(ds, dtName);
        }
    }
}

读取数据表中某单元格内数据:

public static SQLiteManager SQLlog;
public static SQLiteDataReader Reader;
int Num = int.Parse(dataGrid1[dataGrid1.CurrentRowIndex, 0].ToString());
string SearchCmd = "SELECT * FROM InfoLog WHERE 序号=" + Num + "";
Reader = SQLlog.ExeReaderCmd(SearchCmd);
Reader.Read();
listView1.Items[0].SubItems[1].Text = Reader.GetString(7);  //得到数据表中序号为 Num 的这条记录中索引为 7 的列中数据
listView1.Items[1].SubItems[1].Text = Reader.GetString(8);
Reader.Close();
插入指令:INSERT INTO UserInfo VALUES 1,小李
更新指令:UPDATE UserInfo SET 用户ID=1
删除指令:DELETE FROM UserInfo WHERE 用户ID=2,姓名=‘小李‘

以上是关于C# SQLite数据库操作的主要内容,如果未能解决你的问题,请参考以下文章

无法从片段中的 SQLite 获取数据

C#程序员经常用到的10个实用代码片段 - 操作系统

C#操作SQLite数据库整理

技术C#操作SQLite数据库

C# SQLite 数据库操作

C#操作sqlite数据库表中的boolean项