- 事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
- 零配置——不需要安装和管理。
- 实现了绝大多数SQL92标准。
- 整个数据库存储在一个单一的文件中。
- 数据库文件可以在不同字节序的机器之间自由地共享。
- 支持最大可达2T的数据库。 (241 字节)
- 字符串和BLOB类型的大小最大可达 2G 字节(231字节)。
- 小的代码: 完整配置的少于250KB,忽略一些可选特性的少于150KB。
- 在大多数常见操作上比流行的客户/服务器数据库引擎更快。
- 简单,易于使用的API。
- 内建TCL绑定。 另外提供可用于许多其他语言的绑定。
- 具有良好注释的源代码,95%经过测试。
- 独立:没有外部依赖。
- 源代码位于公共域。 可用于任何用途。





代码如下 | |
string connectionString = ""; public FrmCustomer() { InitializeComponent(); connectionString = string.Format(@"Data Source={0}OrderWater.db;Version=3;", Application.StartupPath); } private void FrmCustomer_Load(object sender, EventArgs e) { this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged); this.winGridViewPager1.OnStartExport += new EventHandler(winGridViewPager1_OnStartExport); this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected); this.winGridViewPager1.OnDeleteSelected += new EventHandler(winGridViewPager1_OnDeleteSelected); this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh); this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnAddNew); this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1; this.winGridViewPager1.ShowLineNumber = true;//显示行号 this.winGridViewPager1.PagerInfo.PageSize = 20;//页面大小 this.winGridViewPager1.EventRowBackColor = Color.LightCyan;//间隔颜色 BindData(); } private void winGridViewPager1_OnRefresh(object sender, EventArgs e) { BindData(); } private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e) { if (MessageUtil.ShowYesNoAndTips("您确定删除选定的记录么?") == DialogResult.No) { return; } DataGridView grid = this.winGridViewPager1.dataGridView1; if (grid != null) { foreach (DataGridViewRow row in grid.SelectedRows) { //BLLFactory } BindData(); } } private void winGridViewPager1_OnEditSelected(object sender, EventArgs e) { DataGridView grid = this.winGridViewPager1.dataGridView1; if (grid != null) { foreach (DataGridViewRow row in grid.SelectedRows) { FrmEditCustomer dlg = new FrmEditCustomer(); dlg.ID = row.Cells[0].Value.ToString(); if (DialogResult.OK == dlg.ShowDialog()) { BindData(); } break; } } } private void winGridViewPager1_OnStartExport(object sender, EventArgs e) { string where = GetSearchSql(); PagerInfo info = new PagerInfo(); info.CurrenetPageIndex = 1; info.PageSize = int.MaxValue; this.winGridViewPager1.AllToExport = FindToDataTable(where, info); } private void winGridViewPager1_OnPageChanged(object sender, EventArgs e) { BindData(); } #region 查询辅助函数 /// /// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。 /// /// SQL语句 /// /// 返回查询结果的所有记录的第一个字段,用逗号分隔。 /// public string SqlValueList(string sql) { SQLiteConnection connection = new SQLiteConnection(connectionString); SQLiteCommand cmd = new SQLiteCommand(sql, connection); connection.Open(); StringBuilder result = new StringBuilder(); using (SQLiteDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { result.AppendFormat("{0},", dr[0].ToString()); } } string strResult = result.ToString().Trim(','); return strResult; } /// /// 执行SQL查询语句,返回所有记录的DataTable集合。 /// /// SQL查询语句 /// public DataTable SqlTable(string sql) { DataSet ds = new DataSet(); SQLiteDataAdapter adpater = new SQLiteDataAdapter(sql, connectionString); adpater.Fill(ds); return ds.Tables[0]; } /// /// 标准的记录查询函数 /// /// /// /// private DataTable FindToDataTable(string where, PagerInfo pagerInfo) { WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinControl.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pagerInfo.CurrenetPageIndex, true, where); string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, true); string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, false); string value = SqlValueList(countSql); pagerInfo.RecordCount = Convert.ToInt32(value);//为了显示具体的信息,需要设置总记录数 DataTable dt = SqlTable(dataSql); return dt; } /// /// 根据查询条件构造查询语句 /// /// private string GetSearchSql() { SearchCondition condition = new SearchCondition(); condition.AddCondition("Number", this.txtNumber.Text, SqlOperator.Like) .AddCondition("Name", this.txtName.Text, SqlOperator.Like) .AddCondition("Type", this.cmbType.Text, SqlOperator.Like) .AddCondition("Area", this.cmbArea.Text, SqlOperator.Like) .AddCondition("Address", this.txtAddress.Text, SqlOperator.Like) .AddCondition("Company", this.txtCompany.Text, SqlOperator.Like) .AddCondition("Note", this.txtNote.Text, SqlOperator.Like) .AddCondition("Telephone1", this.txtTelephone.Text, SqlOperator.Like, true, "Telephone") .AddCondition("Telephone2", this.txtTelephone.Text, SqlOperator.Like, true, "Telephone") .AddCondition("Telephone3", this.txtTelephone.Text, SqlOperator.Like, true, "Telephone") .AddCondition("Telephone4", this.txtTelephone.Text, SqlOperator.Like, true, "Telephone") .AddCondition("Telephone5", this.txtTelephone.Text, SqlOperator.Like, true, "Telephone"); if (chkUseDate.Checked) { condition.AddCondition("CreateDate", dateTimePicker1.Value.ToString("yyyy-MM-dd"), SqlOperator.MoreThanOrEqual, true) .AddCondition("CreateDate", dateTimePicker2.Value.AddDays(1).ToString("yyyy-MM-dd"), SqlOperator.LessThanOrEqual, true); } string where = condition.BuildConditionSql().Replace("Where", ""); return where; } #endregion private void BindData() { #region 添加别名解析 //DisplayColumns与显示的字段名或者实体属性一致,大小写不敏感,顺序代表显示顺序,用逗号或者|分开 this.winGridViewPager1.DisplayColumns = "Number,NAME,type,Area,Company,Address,Telephone1,Telephone2,Telephone3,Telephone4,Telephone5,CreateDate,Note,LastUpdated"; this.winGridViewPager1.AddColumnAlias("ID", "编号"); this.winGridViewPager1.AddColumnAlias("Number", "客户编号"); this.winGridViewPager1.AddColumnAlias("Name", "客户名称"); this.winGridViewPager1.AddColumnAlias("Type", "客户类型"); this.winGridViewPager1.AddColumnAlias("Area", "客户地区"); this.winGridViewPager1.AddColumnAlias("Company", "客户单位"); this.winGridViewPager1.AddColumnAlias("Address", "客户地址"); this.winGridViewPager1.AddColumnAlias("Telephone1", "电话1"); this.winGridViewPager1.AddColumnAlias("Telephone2", "电话2"); this.winGridViewPager1.AddColumnAlias("Telephone3", "电话3"); this.winGridViewPager1.AddColumnAlias("Telephone4", "电话4"); this.winGridViewPager1.AddColumnAlias("Telephone5", "电话5"); this.winGridViewPager1.AddColumnAlias("CreateDate", "开户日期"); this.winGridViewPager1.AddColumnAlias("Shop_ID", "分店ID"); this.winGridViewPager1.AddColumnAlias("Note", "备注"); this.winGridViewPager1.AddColumnAlias("LastUpdated", "更新日期"); #endregion string where = GetSearchSql(); this.winGridViewPager1.DataSource = FindToDataTable(where, this.winGridViewPager1.PagerInfo); } private void btnSearch_Click(object sender, EventArgs e) { BindData(); } |
以上例子关键的地方有3个 1、 数据库字符串
代码如下 | |
connectionString = string.Format(@"Data Source={0}OrderWater.db;Version=3;", Application.StartupPath); |
代码如下 | |
public DataTable SqlTable(string sql) { DataSet ds = new DataSet(); SQLiteDataAdapter adpater = new SQLiteDataAdapter(sql, connectionString); adpater.Fill(ds); return ds.Tables[0]; } |
代码如下 | |
WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinControl.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pagerInfo.CurrenetPageIndex, true, where); string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, true); string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, false); |
发表评论