C# WinForm TreeView 动态生成 无限级树 Log4net SQLite
来源:互联网 发布:excel中剔除重复数据 编辑:程序博客网 时间:2024/04/29 07:21
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SQLite;using System.Data;namespace QuartzTaskScheduler{ class SQLiteHelper { #region SQlite数据操作 /// <summary> /// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false /// </summary> public static string ConnectionString { get; set; } private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Parameters.Clear(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 30; if (p != null) { foreach (object parm in p) cmd.Parameters.AddWithValue(string.Empty, parm); } } public static DataSet ExecuteQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { DataSet ds = new DataSet(); PrepareCommand(command, conn, cmdText, p); SQLiteDataAdapter da = new SQLiteDataAdapter(command); da.Fill(ds); return ds; } } } public static int ExecuteNonQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteNonQuery(); } } } public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteReader(CommandBehavior.CloseConnection); } } } public static object ExecuteScalar(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteScalar(); } } } /// <summary> /// 执行SQl语句 返回执行的行数 /// </summary> /// <param name="str">链接数据库的字符串</param> /// <param name="SqlString">sql执行语句</param> /// <param name="Param">参数</param> public static int SQLiteCommand(string str, string SqlString, params SQLiteParameter[] Param) { try { SQLiteConnection slcn = new SQLiteConnection(str); SQLiteCommand slcmd = slcn.CreateCommand(); PrepareCommand(slcmd, slcn, null, SqlString, Param); return slcmd.ExecuteNonQuery(); } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } } /// <summary> /// 执行SQl语句 返回DataSet /// </summary> /// <param name="str">链接数据库的字符串</param> /// <param name="SqlString">sql执行语句</param> /// <param name="Param">参数</param> /// <returns>DataSet</returns> public static DataSet SQLiteCommandDataSet(string str, string SqlString, params SQLiteParameter[] Param) { try { DataSet ds = new DataSet(); SQLiteConnection slcn = new SQLiteConnection(str); SQLiteCommand slcmd = slcn.CreateCommand(); PrepareCommand(slcmd, slcn, null, SqlString, Param); SQLiteDataAdapter sda = new SQLiteDataAdapter(slcmd); slcmd.Parameters.Clear(); sda.Fill(ds); sda.Dispose(); return ds; } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } } /// <summary> /// 执行SQl语句 返回数据集SQLiteDataReader /// </summary> /// <param name="str">链接数据库的字符串</param> /// <param name="SqlString">sql执行语句</param> /// <param name="Param">参数</param> /// <returns>SQLiteDataReader</returns> public static SQLiteDataReader SQLiteCommandDataReader(string str, string SqlString, params SQLiteParameter[] Param) { try { SQLiteConnection slcn = new SQLiteConnection(str); SQLiteCommand slcmd = slcn.CreateCommand(); PrepareCommand(slcmd, slcn, null, SqlString, Param); SQLiteDataReader myReader = slcmd.ExecuteReader(); slcmd.Parameters.Clear(); return myReader; } catch (System.Data.SQLite.SQLiteException ex) { throw new Exception(ex.Message); } } public static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, SQLiteParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (SQLiteParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } #endregion #region Commit To Database public static void CommitToDataBase(string connectionString, DataSet ds, string sql) { try { if (!ds.HasChanges()) { return; } using (SQLiteConnection conn = new SQLiteConnection()) { conn.ConnectionString = connectionString; conn.Open(); using (SQLiteDataAdapter da = new SQLiteDataAdapter(sql, conn)) { SQLiteCommand b = new SQLiteCommand(); da.Update(ds.Tables[0]); ds.AcceptChanges(); } } } catch (Exception) { throw; } } #endregion #region Get Data Set public static DataSet GetDataSet(string connectionString, string sql) { DataSet ds = new DataSet(); try { using (SQLiteConnection conn = new SQLiteConnection()) { conn.ConnectionString = connectionString; conn.Open(); using (SQLiteDataAdapter da = new SQLiteDataAdapter(sql, conn)) { da.Fill(ds); } } } catch (Exception) { throw; } return ds; } #endregion }}
通用类:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data;namespace QuartzTaskScheduler{ class TreeViewUtils { //创建根节点 public static void BindTreeVew(DataSet ds, TreeView treeView, bool isExpanded, string sSelectedData) { //将获取的数据转换为 一个DataTable DataTable dt = ds.Tables[0]; treeView.Nodes.Clear();//清空 树的所有节点 //获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组 DataRow[] rowlist = dt.Select("ParentID='0'"); if (rowlist.Length <= 0) return; //创建跟节点 TreeNode rootNode = new TreeNode(); //设置根节点的属性 rootNode.Text = rowlist[0]["Name"].ToString(); //设置根节点的值 rootNode.Name = rowlist[0]["ID"].ToString(); //rootNode.Expanded = isExpanded; //rootNode.Selected = true; //添加跟节点 treeView.Nodes.Add(rootNode); CreateChildNode(rootNode, dt, isExpanded, sSelectedData); } public static void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData) { //选择数据,添加排序表达市 DataRow[] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Name)); foreach (DataRow row in rowList) { //创建一个新的节点了 TreeNode node = new TreeNode(); node.Text = row["Name"].ToString(); node.Name = row["ID"].ToString(); //node.Expand = isExpanded; //if (node.Name == sSelecedData) //{ // node.Selected = true; //} //parentNode.ChildNodes.Add(node); parentNode.Nodes.Add(node); //递归调用,创建其他节点 CreateChildNode(node, dt, isExpanded, sSelecedData); } } }}
调用:
//获取SQlite数据可定义的连接字符串 string DBConStr = string.Format("Data Source={0}", Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")) + "\\SQLiteDB.db"); private void initTree() { DataSet ds = new DataSet(); string sqlStr = string.Format("select * from TaskScheduler"); ds = SQLiteHelper.SQLiteCommandDataSet(DBConStr, sqlStr, null); TreeViewUtils.BindTreeVew(ds, treeView1,true,"0"); }
SQLiteHelper类:
- C# WinForm TreeView 动态生成 无限级树 Log4net SQLite
- TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树
- 利用TreeView控件动态生成无限级树(转)
- c#,winform,webform,treeview,无限级自动生成
- c#,winform,webform,treeview,无限级自动生成
- 利用TreeView控件动态生成无限级树(续:通过绑定动态xml文件)
- 自定义控件---动态无限级生成 级联comboBox 和 treeView
- C#动态递归绑定TreeView(WinForm)
- c# winform结合数据库动态生成treeview的父节点和子节点方法和思路
- treeView 无限生成树直接绑定类
- TreeView无刷新动态生成树[C# Asp.net 2.0]
- C#如何动态生成treeview节点
- C#如何动态生成treeview节点
- NBU OJ1196
- 这就是我经常的C++状态,多练
- 在Linux系统上手工释放内存
- MonkeyRunner_启动应用程序
- 第一句就是定义了一种ptrfun的C++类型
- C# WinForm TreeView 动态生成 无限级树 Log4net SQLite
- 跨平台(Windows+Linux)的线程辅助程序
- 递归求古典概形
- sed之h;H和:a;N;ba使用
- HTML中的一个不常用单非常实用的标签<fieldset>
- 程序员玩捕鱼达人
- C/C++ struct位结构(位域)
- java中循环命令while,for,do while的区别
- linux 终端高亮显示关键字