C#方便操作数据总结
2015-09-17 23:43
399 查看
之前就也说过, 用自己封装的数据库操作的确好用。 但是, 那个文件也局限于本地使用、
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/fastcry.gif)
今天, 这里贴出 第二版 数据库方便操作的类。不仅适用本地,远程也可以的(还是存在局限
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/cry.gif)
慢慢完善吧)。
先把源码放出:
数据库, 若需要, 只需将其中的Sql字段换成Oledb即可使用Access数据库。
开始介绍该类前, 先看一张图:
![](http://img.blog.csdn.net/20150917232130522?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图展示的很明显:需要传入的连接数据库的字段。对,没错,上面封装的
AccessHelper_Alter中,当需要使用该类的函数的时候, 除了需要传入
操作的字符串,还需要传入
连接数据库的字符串。
下面简单介绍下里面常用的2个函数(以SQL数据库为例):
我这里先定义了数据库的点解字符串:
类型的变量保存 数据库的所在IP,需打开的数据库名,登录数据库的用户名
和密码,再将这个连接字符串传入AccessHelper_Alter类的函数中即可。详情如下:
1,excuteSql
功能:执行sql语句
函数原型:
是连接数据库的字符串。操作数据库的操作:更新,删除,就很适合这个函数呢。
2,dataSet
功能:返回指定sql语句的dataset
比如,查询某张表中的数据,将其显示在datagridview控件上(这里,建议采用这种数据集绑定控件,以保证数据库数据安全)。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/fastcry.gif)
今天, 这里贴出 第二版 数据库方便操作的类。不仅适用本地,远程也可以的(还是存在局限
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/cry.gif)
慢慢完善吧)。
先把源码放出:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Web; using System.Data.SqlClient; using System.Data.Sql; public class AccessHelper_Alter { protected static SqlConnection conn = new SqlConnection(); protected static SqlCommand comm = new SqlCommand(); public AccessHelper_Alter() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 打开数据库 /// </summary> private static void openConnection(string connStr) { if (conn.State == ConnectionState.Closed) { conn.ConnectionString = connStr;// "Data Source = (local);Initial Catalog = Demo;User Id = sa;Password = 1"; comm.Connection = conn; try { conn.Open(); } catch (Exception e) { throw new Exception(e.Message); } } } /// <summary> /// 关闭数据库 /// </summary> private static void closeConnection() { if (conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); comm.Dispose(); } } /// <summary> /// 执行sql语句 /// </summary> /// <param name="sqlstr"></param> public static void excuteSql(string sqlstr, string connStr) { try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; comm.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } } /// <summary> /// 返回指定sql语句的SqlDataReader对象,使用时请注意关闭这个对象。 /// </summary> /// <param name="sqlstr"></param> /// <returns></returns> public static SqlDataReader dataReader(string sqlstr, string connStr) { SqlDataReader dr = null; try { openConnection(connStr); comm.CommandText = sqlstr; comm.CommandType = CommandType.Text; dr = comm.ExecuteReader(CommandBehavior.CloseConnection); } catch { try { dr.Close(); closeConnection(); } catch { } } return dr; } /// <summary> /// 返回指定sql语句的SqlDataReader对象,使用时请注意关闭 /// </summary> /// <param name="sqlstr"></param> /// <param name="dr"></param> public static void dataReader(string sqlstr, ref SqlDataReader dr, string connStr) { try { openConnection(connStr); comm.CommandText = sqlstr; comm.CommandType = CommandType.Text; dr = comm.ExecuteReader(CommandBehavior.CloseConnection); } catch { try { if (dr != null && !dr.IsClosed) dr.Close(); } catch { } finally { closeConnection(); } } } /// <summary> /// 返回指定sql语句的dataset /// </summary> /// <param name="sqlstr"></param> /// <returns></returns> public static DataSet dataSet(string sqlstr, string connStr) { DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(ds); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } return ds; } /// <summary> /// 返回指定sql语句的dataset /// </summary> /// <param name="sqlstr"></param> /// <param name="ds"></param> public static void dataSet(string sqlstr, ref DataSet ds, string connStr) { SqlDataAdapter da = new SqlDataAdapter(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(ds); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } } /// <summary> /// 返回指定sql语句的datatable /// </summary> /// <param name="sqlstr"></param> /// <returns></returns> public static DataTable dataTable(string sqlstr, string connStr) { DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(dt); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } return dt; } /// <summary> /// 返回指定sql语句的datatable /// </summary> /// <param name="sqlstr"></param> /// <param name="dt"></param> public static void dataTable(string sqlstr, ref DataTable dt, string connStr) { SqlDataAdapter da = new SqlDataAdapter(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(dt); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } } /// <summary> /// 返回指定sql语句的dataview /// </summary> /// <param name="sqlstr"></param> /// <returns></returns> public static DataView dataView(string sqlstr, string connStr) { SqlDataAdapter da = new SqlDataAdapter(); DataView dv = new DataView(); DataSet ds = new DataSet(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(ds); dv = ds.Tables[0].DefaultView; } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } return dv; } }这里,默认使用的是SQL
数据库, 若需要, 只需将其中的Sql字段换成Oledb即可使用Access数据库。
开始介绍该类前, 先看一张图:
图展示的很明显:需要传入的连接数据库的字段。对,没错,上面封装的
AccessHelper_Alter中,当需要使用该类的函数的时候, 除了需要传入
操作的字符串,还需要传入
连接数据库的字符串。
下面简单介绍下里面常用的2个函数(以SQL数据库为例):
我这里先定义了数据库的点解字符串:
ConnectionString = "Data Source = (local);Initial Catalog = Demo;User Id = sa;Password = 1";若需动态更换这个数据库连接字符串。可以在用一个string
类型的变量保存 数据库的所在IP,需打开的数据库名,登录数据库的用户名
和密码,再将这个连接字符串传入AccessHelper_Alter类的函数中即可。详情如下:
1,excuteSql
功能:执行sql语句
函数原型:
/// <summary> /// 执行sql语句 /// </summary> /// <param name="sqlstr"></param> public static void excuteSql(string sqlstr, string connStr) { try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; comm.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } }举例:
///-删除SQL 语句 string delStr = "DELETE FROM [" + combox_tabelName.Text + "] WHERE " + KeyNameStr + " = '" + getKeyStr + "'"; AccessHelper_Alter.excuteSql(delStr, connectionString);这里的connectString
是连接数据库的字符串。操作数据库的操作:更新,删除,就很适合这个函数呢。
2,dataSet
功能:返回指定sql语句的dataset
<span style="color:#3333ff;"> </span> /// <summary> /// 返回指定sql语句的dataset /// </summary> /// <param name="sqlstr"></param> /// <returns></returns> public static DataSet dataSet(string sqlstr, string connStr) { DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); try { openConnection(connStr); comm.CommandType = CommandType.Text; comm.CommandText = sqlstr; da.SelectCommand = comm; da.Fill(ds); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } return ds; }用法举例:
///------刷新datagridview中的数据 showData_DataGridView.DataSource = AccessHelper_Alter.dataSet("SELECT * FROM ["+combox_tabelName.Text+"]", connectionString).Tables[0];AccessHelper_Alter.dataset()这个函数执行完后,会得到一个DataSet类型的数据集。
比如,查询某张表中的数据,将其显示在datagridview控件上(这里,建议采用这种数据集绑定控件,以保证数据库数据安全)。
DataSet ds = AccessHelper_Alter.dataSet(queryStr);剩下的函数,有需要的, 可以去源码里面看看,或许有你想要的函数。篇幅有限,我就不赘述了。源码也有了,动手消化下吧
相关文章推荐
- C#中的扩展方法
- C#内存操作
- C#关于使用枚举遇到的问题----Parse()方法使用注意
- .NET基础--索引器
- C#中使用强制类型实现字符串和ASCII码之间的转换
- C#.net 多级cookie写入读取代码,一级、二级域名
- C#实现字符串数组的TreeMap排序
- C#关于使用枚举遇到的问题----Type运算符使用的必要性
- C# AttributeUsage
- C#笔记 值类型 引用类型
- C# winform 窗体间互操作(用委托与事件)
- C#实现子窗体与父窗体通信方法实例总结
- C#知识点总结:Monitor和Lock以及区别
- c#调用带输出参数的存储过程
- C# in Depth (第十章 扩展方法)
- c# 字符串切割 split
- c# 委托 事件
- C# 之 Excel 导入一列中既有汉字又有数字:数字可以正常导入,汉字导入为空
- C# winform 拖拽效果
- C# 策略模式