ASP.SQLServerに対するNETの汎用データベースアクセスクラス

7062 ワード

本稿では、データベースへのアクセスを実現する汎用クラスを模倣し、コードが明確で、データベースのすべての一般的な操作を含む実用的です.

  /// 
  ///         
  /// 
  public class SqlHelper
  {
  private string connectionString;
  /// 
  ///           
  /// 
  public string ConnectionString
  {
  set { connectionString = value; }
  }
  /// 
  ///     
  /// 
  ///         
  public SqlHelper(string connectionString)
  {
  this.connectionString = connectionString;
  }
  /// 
  ///       ,       
  /// 
  ///     sql  
  ///            ,       sql    
  ///        
  public DataTable ExecuteDataTable(string sql,CommandType commandType)
  {
  return ExecuteDataTable(sql, commandType, null);
  }
  /// 
  ///       ,      
  /// 
  ///     sql    
  ///         
  public DataTable ExecuteDataTable(string sql)
  {
  return ExecuteDataTable(sql, CommandType.Text, null);
  }
  /// 
  ///       ,       
  /// 
  ///     sql  
  ///           ,       sql    
  /// Transact-SQL            
  /// 
  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;
  }
  /// 
  ///     SqlDataReader     
  /// 
  ///     SQl    
  /// 
  public SqlDataReader ExecuteReader(string sql)
  {
  return ExecuteReader(sql, CommandType.Text, null);
  }
  /// 
  ///
  /// 
  ///     sql  
  ///           ,       SQl    
  /// 
  public SqlDataReader ExecuteReader(string sql,CommandType commandType)
  {
  return ExecuteReader(sql, commandType, null);
  }
  /// 
  ///     sqldatareader     
  /// 
  /// 
  /// 
  /// 
  /// 
  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);
  }
  /// 
  ///       ,          。     ,   
  /// 
  ///     SQl  
  /// 
  public Object ExecuteScalar(string sql)
  {
  return ExecuteScalar(sql, CommandType.Text, null);
  }
  /// 
  ///
  /// 
  /// 
  /// 
  /// 
  public Object ExecuteScalar(string sql, CommandType commandType)
  {
  return ExecuteScalar(sql, commandType, null);
  }
  /// 
  ///
  /// 
  /// 
  ///     
  /// 
  /// 
  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;
  }
  /// 
  ///             
  /// 
  ///     sql  
  /// 
  public int ExecuteNonQuery(string sql)
  {
  return ExecuteNonQuery(sql, CommandType.Text, null);
  }
  /// 
  ///            
  /// 
  ///          sql  
  ///           ,       sql    
  /// 
  public int ExecuteNonQuery(string sql, CommandType commandType)
  {
  return ExecuteNonQuery(sql, commandType, null);
  }
  /// 
  ///             
  /// 
  ///     sql  
  ///           ,       sql    
  /// Transact-SQL             
  /// 
  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;
  }
  /// 
  ///                      
  /// 
  /// 
  public DataTable GetTables()
  {
  DataTable table = null;
  using (SqlConnection con = new SqlConnection(connectionString))
  {
  con.Open();
  table = con.GetSchema("Tables");
  }
  return table;
  }
  }

データベースにアクセスする汎用クラスを構築した後、データベースに従って操作する場合は、オブジェクトをインスタンス化し、必要に応じて適切なメソッドを呼び出すだけで、データベースに対するすべての操作を完了できます.これが、データベース・アクセス・レイヤとビジネス・ロジック・レイヤの分離のメリットです.このように書くコードは、私たちのコードの複雑さを大幅に減らすことができ、煩雑さも大幅に低減します.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.