本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。
/// <summary> /// 数据库访问通用类 /// </summary> public class SqlHelper { private string connectionString; /// <summary> /// 设定数据库访问字符串 /// </summary> public string ConnectionString { set { connectionString = value; } } /// <summary> /// 构造函数 /// </summary> /// <param name="connectionString">数据库访问字符串</param> public SqlHelper(string connectionString) { this.connectionString = connectionString; } /// <summary> /// 执行一个查询,并返回查询结果 /// </summary> /// <param name="sql">要执行的sql语句</param> /// <param name="commandType">要执行的查询语句的类型,如存储过程或者sql文本命令</param> /// <returns>返回查询结果集</returns> public DataTable ExecuteDataTable(string sql,CommandType commandType) { return ExecuteDataTable(sql, commandType, null); } /// <summary> /// 执行一个查询,并返回结果集 /// </summary> /// <param name="sql">要执行的sql文本命令</param> /// <returns>返回查询的结果集</returns> public DataTable ExecuteDataTable(string sql) { return ExecuteDataTable(sql, CommandType.Text, null); } /// <summary> /// 执行一个查询,并返回查询结果 /// </summary> /// <param name="sql">要执行的sql语句</param> /// <param name="commandtype">要执行查询语句的类型,如存储过程或者sql文本命令</param> /// <param name="parameters">Transact-SQL语句或者存储过程参数数组</param> /// <returns></returns> public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters) { DataTable data = new DataTable(); //实例化datatable,用于装载查询结果集 using (SqlConnection con = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(sql, con)) { cmd.CommandType = commandtype;//设置command的commandType为指定的Commandtype //如果同时传入了参数,则添加这些参数 if (parameters != null) { foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } } //通过包含查询sql的sqlcommand实例来实例化sqldataadapter SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(data);//填充datatable } } return data; } /// <summary> /// 返回一个SqlDataReader对象的实例 /// </summary> /// <param name="sql">要执行的SQl查询命令</param> /// <returns></returns> public SqlDataReader ExecuteReader(string sql) { return ExecuteReader(sql, CommandType.Text, null); } /// <summary> /// /// </summary> /// <param name="sql">要执行的sql语句</param> /// <param name="commandType">要执行查询语句的类型,如存储过程或者SQl文本命令</param> /// <returns></returns> public SqlDataReader ExecuteReader(string sql,CommandType commandType) { return ExecuteReader(sql, commandType, null); } /// <summary> /// 返回一个sqldatareader对象的实例 /// </summary> /// <param name="sql"></param> /// <param name="commandType"></param> /// <param name="parameters"></param> /// <returns></returns> public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters) { SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(sql, con); if (parameters != null) { foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameters); } } con.Open(); //CommandBehavior.CloseConnection参数指示关闭reader对象时关闭与其关联的Connection对象 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 执行一个查询,返回结果集的首行首列。忽略其他行,其他列 /// </summary> /// <param name="sql">要执行的SQl命令</param> /// <returns></returns> public Object ExecuteScalar(string sql) { return ExecuteScalar(sql, CommandType.Text, null); } /// <summary> /// /// </summary> /// <param name="sql"></param> /// <param name="commandType"></param> /// <returns></returns> public Object ExecuteScalar(string sql, CommandType commandType) { return ExecuteScalar(sql, commandType, null); } /// <summary> /// /// </summary> /// <param name="sql"></param> /// <param name="commandType">参数类型</param> /// <param name="parameters"></param> /// <returns></returns> public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters) { Object result=null; SqlConnection con=new SqlConnection(connectionString); SqlCommand cmd=new SqlCommand(sql,con); cmd.CommandType= commandType; if(parameters!=null) { foreach (SqlParameter parapmeter in parameters) { cmd.Parameters.Add(parapmeter); } } con.Open(); result=cmd.ExecuteScalar(); con.Close(); return result; } /// <summary> /// 对数据库进行增删改的操作 /// </summary> /// <param name="sql">要执行的sql命令</param> /// <returns></returns> public int ExecuteNonQuery(string sql) { return ExecuteNonQuery(sql, CommandType.Text, null); } /// <summary> /// 数据库进行增删改的操作 /// </summary> /// <param name="sql">对数据库进行操作的sql命令</param> /// <param name="commandType">要执行查询语句的类型,如存储过程或者sql文本命令</param> /// <returns></returns> public int ExecuteNonQuery(string sql, CommandType commandType) { return ExecuteNonQuery(sql, commandType, null); } /// <summary> /// 对数据库进行增删改的操作 /// </summary> /// <param name="sql">要执行的sql语句</param> /// <param name="commandType">要执行的查询语句类型,如存储过程或者sql文本命令</param> /// <param name="parameters">Transact-SQL语句或者存储过程的参数数组</param> /// <returns></returns> public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters) { int count = 0; SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(sql, con); cmd.CommandType = commandType; if (parameters != null) { foreach(SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } } con.Open(); count = cmd.ExecuteNonQuery(); con.Close(); return count; } /// <summary> /// 返回当前连接的数据库中所有用户创建的数据库 /// </summary> /// <returns></returns> public DataTable GetTables() { DataTable table = null; using (SqlConnection con = new SqlConnection(connectionString)) { con.Open(); table = con.GetSchema("Tables"); } return table; } }
如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。
这样书写的代码,可以大大的减少我们代码的复杂度,而且,繁琐度也大大的降低了。
以上就是本文的全部内容,希望对大家的学习有所帮助。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年09月27日
2024年09月27日
- 许美静.1999-快乐无罪【上华】【WAV+CUE】
- 群星.2024-Jambo.Medley(BEYOND40周年·致敬2)【Kinns】【FLAC分轨】
- 林翠萍.1991-舞曲世界2辑【星河】【WAV+CUE】
- 关智斌.2007-In.Progress【英皇娱乐】【FLAC分轨】
- 群星.2000-电影主题曲原声带·琼瑶的世界【歌林】【WAV+CUE】
- 范世錡.2024-錡妙夜(EP)【天娱传媒】【FLAC分轨】
- 谭咏麟.2000-魅力千禧演唱会2CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 纯音入心系列纯音乐《器乐古筝》1CD[MP3][239MB]
- 纯音入心系列纯音乐《华夏民乐之古筝篇》1CD[MP3][192MB]
- 纯音入心系列纯音乐《中央民族乐团-古筝传奇》1CD[MP3][253.1MB]
- 江玲.1989-这样你才爱我,是吗?【新作有声】【WAV+CUE】
- 郭美美.2010-我是郭美美【华纳】【WAV+CUE】
- 黄心懋1991-轻忧郁【滚石】【WAV+CUE】
- 群星.2000-大地金曲世纪回顾2CD【大地】【WAV+CUE】
- 王菲.1996-浮躁(2024环球MQA-UHQCD限量版)【环球】【WAV+CUE】