天天看点

C# 使用WinForm进行SQLite操作前言一、安装配置SQLite二、VS环境配置三、数据库连接四、执行SQL语句五、注意

文章目录

  • 前言
  • 一、安装配置SQLite
  • 二、VS环境配置
  • 三、数据库连接
  • 四、执行SQL语句
  • 五、注意
    • • 读写操作过慢该怎么办?

前言

C# 使用WinForm进行sqlite操作。

一、安装配置SQLite

使用 DB Browser for SQLite 生成和配置SQLite文件。

C# 使用WinForm进行SQLite操作前言一、安装配置SQLite二、VS环境配置三、数据库连接四、执行SQL语句五、注意

该软件安装完毕以后,界面为中文。

C# 使用WinForm进行SQLite操作前言一、安装配置SQLite二、VS环境配置三、数据库连接四、执行SQL语句五、注意

完成 *.db文件的生成。

二、VS环境配置

添加NuGet引用。

C# 使用WinForm进行SQLite操作前言一、安装配置SQLite二、VS环境配置三、数据库连接四、执行SQL语句五、注意

选择正确包,不要点.Core

C# 使用WinForm进行SQLite操作前言一、安装配置SQLite二、VS环境配置三、数据库连接四、执行SQL语句五、注意

插入引用

using System.Data;
using System.Data.SQLite;
           

三、数据库连接

链接到运行目录的hello.db数据库文件。

public SQLiteConnectionStringBuilder connectionString = new SQLiteConnectionStringBuilder();//构造连接数据库的字符串
SQLiteConnection SqlConnection;//连接数据库
connectionString.DataSource = Application.StartupPath + @"\hello.db";
SqlConnection = new SQLiteConnection(connectionString.ToString());
SqlConnection.Open();
           

注意:要使用绝对路径,否则会报错。

连接后,读取测试。读取log表中UID和Level的记录。如无误,即可证明成功。

var sql = "select * from log";

SQLiteDataAdapter da = new SQLiteDataAdapter(sql, SqlConnection);

DataSet ds = new DataSet();
da.Fill(ds);
DataTable re = ds.Tables[0];

List<string> restr = new List<string>();
foreach (DataRow v in re.Rows)
{
	string key = v["UID"].ToString();
	string value = v["Level"].ToString();
	restr.Add(key + "-" + value);
}

//显示到文本框
foreach (var v in restr)
{
	richTextBox1.Text += v;
	richTextBox1.Text += "\n";
}
           

四、执行SQL语句

增记录

var sql = "INSERT INTO Log ( Data, Level, Info) VALUES ( 'Bill', 'Xuanwumen 10', 'Beijing')";
SQLiteCommand SqlCmd = new SQLiteCommand(sql, SqlConnection);
int changedRows = SqlCmd.ExecuteNonQuery();
if (changedRows > 0)
{
    MessageBox.Show("ok");
}
SqlCmd.Parameters.Clear();
SqlCmd.Dispose();
           

删全部

var sql = "DELETE FROM  Log";
SQLiteCommand SqlCmd = new SQLiteCommand(sql, SqlConnection);
int changedRows = SqlCmd.ExecuteNonQuery();


if (changedRows > 0)
{
    MessageBox.Show("ok");
}
SqlCmd.Parameters.Clear();
SqlCmd.Dispose();
           

这个比较简单

五、注意

• 读写操作过慢该怎么办?

连接后,如此配置即可

var sql = "PRAGMA synchronous=OFF;";
SQLiteCommand SqlCmd = new SQLiteCommand(sql, SqlConnection);
int changedRows = SqlCmd.ExecuteNonQuery();

sql = "PRAGMA Journal_Mode=WAL;";
SqlCmd = new SQLiteCommand(sql, SqlConnection);
SqlCmd.ExecuteNonQuery();

sql = "PRAGMA Cache_Size=5000;";
SqlCmd = new SQLiteCommand(sql, SqlConnection);
SqlCmd.ExecuteNonQuery();