当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET对SQLServer的通用数据库访问类

ASP.NET对SQLServer的通用数据库访问类

2017年12月12日  | 移动技术网IT编程  | 我要评论

西安招标,斯诺克大师赛展开,魂回大清txt下载

本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。

  /// <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;
  }
  }

    如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。
    这样书写的代码,可以大大的减少我们代码的复杂度,而且,繁琐度也大大的降低了。

以上就是本文的全部内容,希望对大家的学习有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网