SQLite在.net的应用
发布时间:2020-12-12 20:02:29 所属栏目:百科 来源:网络整理
导读:IDE: VS2005 语言: C# 组件:sqlite-netFx20-setup-bundle-x86-2005-1.0.92.0 简介: 本示例使用SQLite的密码、外键功能。以及关闭临时文件(journal mode=Off)。 通过查询和插入(修改、删除)来演示C#使用SQLite的实用性。 一、设计窗体 拖拽2个TextBox、2
IDE: VS2005 语言: C# 组件:sqlite-netFx20-setup-bundle-x86-2005-1.0.92.0
简介: 本示例使用SQLite的密码、外键功能。以及关闭临时文件(journal mode=Off)。 通过查询和插入(修改、删除)来演示C#使用SQLite的实用性。
一、设计窗体拖拽2个TextBox、2个Button、1个DataGridView、1个SQLiteConnection、1个SQLiteCommand
设置SQLiteCommand的Connection属性为SQLiteConnection
完整的窗体:
二、功能实现1. 查询(1)设置数据桥 dataAdapter = new SQLiteDataAdapter(sqLiteCommand1); (2)设置缓存器 cmdBuilder = new SQLiteCommandBuilder(dataAdapter); (3)建立数据表 table = new DataTable(tblName); (4)连接数据表 dataAdapter.Fill(table); (5)指定数据源 dataGridView1.DataSource = table; 为了定位表的名称,我们使用查找特定的关键字:from。 int iPos = statementStr.LastIndexOf("from") + 5; String tblName = statementStr.Substring(iPos,(statementStr.Length - 1) - iPos); 2. 插入按照行来分解Insert语句;也可以执行Update、Delete等语句。 int i = edtStmt.Lines.Length; for (int j = 0; j < i; j++) { String strSta = edtStmt.Lines[j].ToString(); sqLiteCommand1.CommandText = strSta; sqLiteCommand1.ExecuteNonQuery(); } 三、源代码 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Data.SQLite; namespace testSQLite { public partial class Form1 : Form { private DataTable table; private SQLiteDataAdapter dataAdapter; private SQLiteCommandBuilder cmdBuilder; private String strFmt,connStr; private String currDir; public Form1() { InitializeComponent(); currDir = Directory.GetCurrentDirectory(); strFmt = "data source="" + currDir + "/{0}"" + ";page size=32768;" + "cache size=0;" + "Password=20130321;" + "foreign keys=True;" + "journal mode=Off"; } private void btnExec_Click(object sender,EventArgs e) { if (edtStmt.Text.ToLower().IndexOf("insert") < 0) return; connStr = string.Format(strFmt,edtDB.Text); // sqLiteConnection1.Close(); sqLiteConnection1.ConnectionString = connStr; sqLiteConnection1.Open(); int i = edtStmt.Lines.Length; for (int j = 0; j < i; j++) { String strSta = edtStmt.Lines[j].ToString(); sqLiteCommand1.CommandText = strSta; sqLiteCommand1.ExecuteNonQuery(); } MessageBox.Show("Insert Done"); } private void btnSearch_Click(object sender,EventArgs e) { if (edtStmt.Text.IndexOf(";") < 0) { MessageBox.Show("Please enter a SQL statement terminator - ';'"); return; } connStr = string.Format(strFmt,edtDB.Text); String statementStr = edtStmt.Text.ToLower(); int iPos = statementStr.LastIndexOf("from") + 5; String tblName = statementStr.Substring(iPos,(statementStr.Length - 1) - iPos); sqLiteConnection1.Close(); sqLiteConnection1.ConnectionString = connStr; sqLiteConnection1.Open(); sqLiteCommand1.CommandText = edtStmt.Text; dataAdapter = new SQLiteDataAdapter(sqLiteCommand1); cmdBuilder = new SQLiteCommandBuilder(dataAdapter); table = new DataTable(tblName); dataAdapter.Fill(table); dataGridView1.DataSource = table; } } }
参考文档:SQLite.NET.chm(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |