1.语法介绍
每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。 SQLITE_MASTER 表看起来如下:
CREATE TABLE sqlite_master
(
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字。所以,要获得数据库中所有表的列表, 使用下列SELECT语句:
SELECT * FROM sqlite_master WHERE type='table' ORDER BY name;
对于索引,type 等于 ‘index’, name 则是索引的名字,tbl_name 是该索引所属的表的名字。 不管是表还是索引,sql 字段是原先用 CREATE TABLE 或 CREATE INDEX 语句创建它们时的命令文本【注,转自https://blog.csdn.net/niukailun523/article/details/8441964】。
2.工程实例
项目要求:假如你备份一个数据库,在某一天需要复原数据库,这时需要把数据库中表的名字写到XML中,同时在在treeview中显示。这么做的的前提就是你需要遍历数据库中存在几张表,原理如上。
核心代码如下:
private void button3_Click(object sender, EventArgs e)
{
if(textBox3.Text.Trim()=="")
{
MessageBox.Show("请选择需要复原的数据库!");
}
else
{
//设计思路:把数据的名字和他里面的几张表都写到XML中,同时在在treeview中显示
//先读取数据库中有几张表
//连接数据库
string startpath = textBox3.Text.Trim(); //数据库的地址
SQLiteConnection conn = new SQLiteConnection();
SQLiteConnectionStringBuilder connstr = new SQLiteConnectionStringBuilder();
connstr.DataSource = startpath;
conn.ConnectionString = connstr.ToString();
conn.Open();
// DataSet dataset = new DataSet();
SQLiteCommand cmd = new SQLiteCommand();
string sql = "SELECT * FROM sqlite_master WHERE type = 'table' ORDER BY name;";
List<object> tempstring = new List<object>();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
DataRow[] tbs = dt.Select("type = 'table'");
foreach (var tb in tbs)
tempstring.Add(tb["name"]);//这里就存储了你的表,哈哈完成,你已经提取出你的表明
}
conn.Close();
conn.Dispose();
}
}
【https://blog.csdn.net/gy0124/article/details/107069880/】