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;
}
}
如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。
这样书写的代码,可以大大的减少我们代码的复杂度,而且,繁琐度也大大的降低了。
以上就是本文的全部内容,希望对大家的学习有所帮助。