WinForm杂记:C#操作SQLite数据库(总结)

Posted ricardoislearning

tags:

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

操作功能列表:

  • 功能1:读取所有表名/索引/视图
  • 功能2:读取表数据

 

 

 

功能1:读取所有表名/索引/视图

每一个 SQLite 数据库都有一个叫sqlit_master的表, 里面存储着数据库的数据结构(表结构、视图结构、索引结构等)。故通过读取sqlit_master便可以获取所有的表格信息。

获取表名

SELECT name FROM sqlite_master WHERE TYPE=‘table‘ ORDER BY name

获取索引

SELECT name FROM sqlite_master WHERE TYPE=‘index‘ ORDER BY name  

获取视图

SELECT name FROM sqlite_master WHERE TYPE=‘view‘ ORDER BY name

以获取表名为例,完整代码为

 1 public DataSet GetTableNames(string path) {
 2     string strSQL = "SELECT name FROM sqlite_master WHERE TYPE=‘table‘ ORDER BY name";
 3     DataSet ds = null;
 4     try {
 5         SQLiteConnection conn = new SQLiteConnection(path);
 6         SQLiteCommand cmd = new SQLiteCommand(strSQL, conn);
 7         SQLiteDataAdapter reciever = new SQLiteDataAdapter(cmd);
 8         ds = new DataSet();
 9         reciever.Fill(ds);
10         return ds;
11     } catch {
12         MessageBox.Show("There is no data table");
13     }
14     return ds;
15 }
16 DataSet dbnames = GetTableNames(DBPath);

注意此时返回的ds包含的元素数量只有一个,所有表名以列向量的形式存储在一张表中(即ds唯一的元素)。

读取表数量的代码为

int tablecount = dbnames.Tables[0].Rows.Count;

读取索引为X的表名

string tablename = dbnames.Table[0].Rows[X].ItemArray[0].ToString();//X starts from 0

  

功能2:读取表数据

 1 public DataTable GetDataTable(string strSQL, string path){
 2     DataTable dt = null;
 3     try {
 4         SQLiteConnection conn = new SQLiteConnection(path);
 5         SQLiteCommand cmd = new SQLiteCommand(strSQL,conn);
 6         SQLiteDataAdapter reciever = new SQLiteDataAdapter(cmd);
 7         dt = new DataTable();
 8         reciever.Fill(dt);
 9         return dt;
10     } catch{
11         MessageBox.Show("There is no such a datatable");
12     }
13     return dt;
14 }

  其中strSQL是获取db文件中数据表的指令

string sSQL = "SELECT * FROM item_compound;";

这里的数据表名为"item_compound"。

文件路Path为

public static string DBPath = string.Format(@"Data Source={0}",
                    Application.StartupPath + @"CCUS_supstr_temp.db");//the path of .db file  

这里的db文件名为“CCUS_supstr_temp.db”。

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

C#操作SQLite数据库整理

C#操作Sqlite快速入门及相关工具收集

C# winform程序 excel导入Sqlite数据库(批量新增),求大神看看我的代码

我用C#进行winform编程,关于progressBar的用法

使用 SQLite 和 WinForms 2.0 C# 的编码问题

C#EF操作数据库,问题求助