ASP.NET对SQLServer的通用数据库访问类
本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。
///<summary> ///数据库访问通用类 ///</summary> publicclassSqlHelper { privatestringconnectionString; ///<summary> ///设定数据库访问字符串 ///</summary> publicstringConnectionString { set{connectionString=value;} } ///<summary> ///构造函数 ///</summary> ///<paramname="connectionString">数据库访问字符串</param> publicSqlHelper(stringconnectionString) { this.connectionString=connectionString; } ///<summary> ///执行一个查询,并返回查询结果 ///</summary> ///<paramname="sql">要执行的sql语句</param> ///<paramname="commandType">要执行的查询语句的类型,如存储过程或者sql文本命令</param> ///<returns>返回查询结果集</returns> publicDataTableExecuteDataTable(stringsql,CommandTypecommandType) { returnExecuteDataTable(sql,commandType,null); } ///<summary> ///执行一个查询,并返回结果集 ///</summary> ///<paramname="sql">要执行的sql文本命令</param> ///<returns>返回查询的结果集</returns> publicDataTableExecuteDataTable(stringsql) { returnExecuteDataTable(sql,CommandType.Text,null); } ///<summary> ///执行一个查询,并返回查询结果 ///</summary> ///<paramname="sql">要执行的sql语句</param> ///<paramname="commandtype">要执行查询语句的类型,如存储过程或者sql文本命令</param> ///<paramname="parameters">Transact-SQL语句或者存储过程参数数组</param> ///<returns></returns> publicDataTableExecuteDataTable(stringsql,CommandTypecommandtype,SqlParameter[]parameters) { DataTabledata=newDataTable();//实例化datatable,用于装载查询结果集 using(SqlConnectioncon=newSqlConnection(connectionString)) { using(SqlCommandcmd=newSqlCommand(sql,con)) { cmd.CommandType=commandtype;//设置command的commandType为指定的Commandtype //如果同时传入了参数,则添加这些参数 if(parameters!=null) { foreach(SqlParameterparameterinparameters) { cmd.Parameters.Add(parameter); } } //通过包含查询sql的sqlcommand实例来实例化sqldataadapter SqlDataAdapteradapter=newSqlDataAdapter(cmd); adapter.Fill(data);//填充datatable } } returndata; } ///<summary> ///返回一个SqlDataReader对象的实例 ///</summary> ///<paramname="sql">要执行的SQl查询命令</param> ///<returns></returns> publicSqlDataReaderExecuteReader(stringsql) { returnExecuteReader(sql,CommandType.Text,null); } ///<summary> /// ///</summary> ///<paramname="sql">要执行的sql语句</param> ///<paramname="commandType">要执行查询语句的类型,如存储过程或者SQl文本命令</param> ///<returns></returns> publicSqlDataReaderExecuteReader(stringsql,CommandTypecommandType) { returnExecuteReader(sql,commandType,null); } ///<summary> ///返回一个sqldatareader对象的实例 ///</summary> ///<paramname="sql"></param> ///<paramname="commandType"></param> ///<paramname="parameters"></param> ///<returns></returns> publicSqlDataReaderExecuteReader(stringsql,CommandTypecommandType,SqlParameter[]parameters) { SqlConnectioncon=newSqlConnection(connectionString); SqlCommandcmd=newSqlCommand(sql,con); if(parameters!=null) { foreach(SqlParameterparameterinparameters) { cmd.Parameters.Add(parameters); } } con.Open(); //CommandBehavior.CloseConnection参数指示关闭reader对象时关闭与其关联的Connection对象 returncmd.ExecuteReader(CommandBehavior.CloseConnection); } ///<summary> ///执行一个查询,返回结果集的首行首列。忽略其他行,其他列 ///</summary> ///<paramname="sql">要执行的SQl命令</param> ///<returns></returns> publicObjectExecuteScalar(stringsql) { returnExecuteScalar(sql,CommandType.Text,null); } ///<summary> /// ///</summary> ///<paramname="sql"></param> ///<paramname="commandType"></param> ///<returns></returns> publicObjectExecuteScalar(stringsql,CommandTypecommandType) { returnExecuteScalar(sql,commandType,null); } ///<summary> /// ///</summary> ///<paramname="sql"></param> ///<paramname="commandType">参数类型</param> ///<paramname="parameters"></param> ///<returns></returns> publicObjectExecuteScalar(stringsql,CommandTypecommandType,SqlParameter[]parameters) { Objectresult=null; SqlConnectioncon=newSqlConnection(connectionString); SqlCommandcmd=newSqlCommand(sql,con); cmd.CommandType=commandType; if(parameters!=null) { foreach(SqlParameterparapmeterinparameters) { cmd.Parameters.Add(parapmeter); } } con.Open(); result=cmd.ExecuteScalar(); con.Close(); returnresult; } ///<summary> ///对数据库进行增删改的操作 ///</summary> ///<paramname="sql">要执行的sql命令</param> ///<returns></returns> publicintExecuteNonQuery(stringsql) { returnExecuteNonQuery(sql,CommandType.Text,null); } ///<summary> ///数据库进行增删改的操作 ///</summary> ///<paramname="sql">对数据库进行操作的sql命令</param> ///<paramname="commandType">要执行查询语句的类型,如存储过程或者sql文本命令</param> ///<returns></returns> publicintExecuteNonQuery(stringsql,CommandTypecommandType) { returnExecuteNonQuery(sql,commandType,null); } ///<summary> ///对数据库进行增删改的操作 ///</summary> ///<paramname="sql">要执行的sql语句</param> ///<paramname="commandType">要执行的查询语句类型,如存储过程或者sql文本命令</param> ///<paramname="parameters">Transact-SQL语句或者存储过程的参数数组</param> ///<returns></returns> publicintExecuteNonQuery(stringsql,CommandTypecommandType,SqlParameter[]parameters) { intcount=0; SqlConnectioncon=newSqlConnection(connectionString); SqlCommandcmd=newSqlCommand(sql,con); cmd.CommandType=commandType; if(parameters!=null) { foreach(SqlParameterparameterinparameters) { cmd.Parameters.Add(parameter); } } con.Open(); count=cmd.ExecuteNonQuery(); con.Close(); returncount; } ///<summary> ///返回当前连接的数据库中所有用户创建的数据库 ///</summary> ///<returns></returns> publicDataTableGetTables() { DataTabletable=null; using(SqlConnectioncon=newSqlConnection(connectionString)) { con.Open(); table=con.GetSchema("Tables"); } returntable; } }
如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。
这样书写的代码,可以大大的减少我们代码的复杂度,而且,繁琐度也大大的降低了。
以上就是本文的全部内容,希望对大家的学习有所帮助。