TreeView的数据源绑定—采用sqlite作为数据源,实现对treeview控件进行增删改查
2012-02-27 14:56
316 查看
接上篇《TreeView的数据源绑定—采用XML作为数据源,实现对treeview进行增删改查,之后回写XML文档》,本篇是使用一种比较轻型的数据库—sqlite作为treeview的数据源,关于sqlite具体的知识请前往:
1,sqlite官网
2,维基百科
3,百度百科
根据当前项目存储的要求,由于之前使用XML来存储,现在再用XML有些不方便,时间上花费要多,所以在网上找了sqlite作为新的数据存储源,使用之后,感觉实在是太方便了,所以把使用过程记录下来,本人作为第一次用sqlite,对以前没接触过sqlite的朋友来说,可以参考参考的,但毕竟是我一个人的思想,所以,写的不好,还请大家不要见怪!
首先,得先讲下sqlite的优点:使用简单,不需要安装配置,拿到.db文件就可以用,蒽,很适合存储量比较小的winfrom程序(如我当前的这个项目),最重要的是sqlite开源而还且免费的哦,还有其他很多的优点,现在讲到的都是我现在已经用到了;
当然,毕竟没有完美的事物,缺点:存储的数据量不大,大家用的时候不要当作MSSQL、MYSQL或ORACLE来用,据说,最大可以达到2TB,不知道是不是真的。- -!性能嘛,当然是数据量越小的时候,发挥的越好,反正我用到现在查询速度还是可以的,够用就行了。
使用的时候装个管理工具吧,我推荐我现在使用的这款,是免费的,SQLite可视化数据库管理器。
在项目中还需要引用来自外部的2个DLL文件,我把文件放在了附件中。
使用sqlite的时候,我的项目中新建了一个类,该类专门处理来自窗体页面的查询,类似与SQLHelper,我把主要的查询函数贴上来,具体的我会作为附件,请需要的朋友下载附件查看。
View Code
private void RemoveTreeView() { if (tree_Area.SelectedNode != null) { TreeNode node = tree_Area.SelectedNode; int childNode = node.Nodes.Count; if (childNode == 0) { DeleteTreeNode(node); } else { if (MessageBox.Show("确定要删除选中的所有节点吗 ?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { DeleteTreeNode(node); } } } else { MessageBox.Show("未选中节点,请选中需要删除的节点!", "提示"); } } /// <summary> /// 删除所选节点及其子节点,同时更新数据库 /// </summary> /// <param name="parentNode"></param> private void DeleteTreeNode(TreeNode parentNode) { try { //获取当前删除的节点是否还有子节点 int childCount = parentNode.Nodes.Count; for (int i = 0; i < childCount; i++) { TreeNode childNode = parentNode.Nodes[0]; if (childNode.Nodes.Count > 0) { DeleteTreeNode(childNode); } else { DeleteTreeNode(childNode); childNode.Remove(); } } if (parentNode.Nodes.Count == 0) { DeleteNodeData(parentNode); parentNode.Remove(); } } catch { } } /// <summary> /// 在数据库中删除当前选中的节点 /// </summary> /// <param name="node"></param> private void DeleteNodeData(TreeNode node) { string strPath = "Area_db.db"; SqliteHelper sh = new SqliteHelper(strPath); string sql = string.Empty; sql = "delete from AreaTree where a_Id="+node.Name+""; sh.ExecuteRemove(sql); }
蒽,还有个情况是,关于sqlite管理器的字符编码问题,在sqlite管理器中一般都以UFT-8编码显示,但是在C#中,所有字符窜的编码都是unicode,写入的时候应该注意编码转换问题,我这边是出现了字符编码的问题,后面写了个函数来转换。在连接sqlite的时候可以写明需要操作的是什么编码,编译环境会自动根据设定的字符编码来get、set,显示也就正常了,如果,在sqlite管理工具上查看的是uft-8编码的话,那取出的数据也应该是显示正常的,但是在有的PC上显示的是乱码,这个时候就应该去转换一下,读取的数据了。
/// <summary> /// 把GB转换成uft8-8 /// </summary> /// <param name="strEnCode"></param> private string EnCodeing(string strEnCode) { UTF8Encoding uft8 = new UTF8Encoding(); string unicodeString = strEnCode; Byte[] encodeBytes = uft8.GetBytes(unicodeString); String decodeString = uft8.GetString(encodeBytes); return decodeString; }
程序运行效果图:
![](http://pic002.cnblogs.com/images/2012/356209/2012022714332256.jpg)
总结:我这边写的数据库语句全是拼接的,但是在逛论坛的时候,看到说数据库的语句要少用字符窜拼接的形式,但是,我不知道该怎么去解决他,所以,还请各位知道的前辈告知下,谢谢!这次的sqlite学习旅途比较愉快的,主要是刚接触,比较有兴趣,还有就是sqlite的数据库语法和MSSQL很像,比较快上手。 Via cnblogs.com/aehoo/ 2012-02-27 WJF Dev
附件的内容有:1,System.Data.SQLite.DLL 使用sqlite必要的文件
2,System.Data.SQLite.Linq.dll 使用sqlite必要的文件
3,SqliteHelper.cs 被我称为数据库操作类
4,SQLiteTest 一个测试demo
点击下载附件:下载
相关文章推荐
- TreeView的数据源绑定—采用XML作为数据源,实现对treeview进行增删改查,之后回写XML文档
- 实现TreeView的XML数据源绑定
- ASP.NET实现TreeView的XML数据源绑定实例代码
- spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样
- treeview绑定到关系数据源,生成树,并实现checkbox的级联选择
- ASP.NET实现TreeView的XML数据源绑定实例代码
- ASP.NET实现TreeView的XML数据源绑定实例代码
- Spring MVC结合ireport采用javabean作为数据源的实现
- ASP.NET实现TreeView的XML数据源绑定
- C# Winform 对用BindingList(List)作为数据源绑定的datagridview进行上下行移动操作
- Android采用ListView实现数据列表显示2-使用SimpleAdapter进行数据绑定
- DataGridView绑定数据源并实现增删保存
- C#_以SQLDataReader为数据源,实现TreeView与ListView之间的动态绑定
- ASP.NET实现TreeView的XML数据源绑定
- 控件(三)——TreeView控件以XmlDataSource控件为数据源实现简单的绑定
- 控件(三)——TreeView控件以XmlDataSource控件为数据源实现简单的绑定
- Android采用ListView实现数据列表显示1-使用SimpleCursorAdapter进行数据绑定
- Android成长之路-SQLite实现建表,增删改查,分页
- C#.net实现动态绑定TreeView
- AutoCompleteTextView 与sqlite绑定实现记住用户输入的内容并自动提示