自己的一个数据库操作类

来源:互联网 发布:软件怎么看源码 编辑:程序博客网 时间:2024/05/21 08:36

该数据据操作类采用工厂模式,其中ADODB.cs为工厂方法

ADODB.cs

 

using System;
using System.Data;
using Base.Enums;
using System.Configuration;

namespace Base.DBHelper
{
 
/// <summary>
 
/// ADODB 的摘要说明。
 
/// </summary>

 public class ADODB:IDBHelper
 
{
  
private string ConnectString=ConfigurationSettings.AppSettings["ConnectionString"];
  
private DBType dbType=(Enums.DBType)(int.Parse(ConfigurationSettings.AppSettings["DBType"]));
  
private IDBHelper obj=null

  
public ADODB()
  
{
   
switch(dbType)
   
{
    
case DBType.SqlDB:
     obj
=new SqlServer();
     
break;
    
case DBType.OleDB:
     obj
=new OleDb();
     
break;
    
case DBType.OracleDB:
     obj
=new Oracle();
     
break;
    
default:
     obj
=new SqlServer();
     
break;
   }

  }

  
IDBHelper 成员
 }

}


 

DBHelper.cs

 

 

using System;
using System.Collections;
using System.Data;

namespace Base.Data
{
    
/// <summary>
    
/// ADOHelper 的摘要说明。
    
/// </summary>

    public class DBHelper
    
{
        
public DBHelper()
        
{
        }

        
private static CommandType getCommandType(bool IsProc)
        
{
            
if(IsProc)
                
return CommandType.StoredProcedure;
            
else 
                
return CommandType.Text;
        }

        
private static IDbCommand makeCommand(ADODB ado,string sql,bool IsProc,Hashtable paras)
        
{
            IDbCommand cmd
=ado.getCommand();
            cmd.CommandText
=sql;
            cmd.CommandType
=getCommandType(IsProc);
            
if(paras!=null)
            
{
                
foreach(DictionaryEntry para in paras)
                
{
                    IDbDataParameter p
=ado.getParameter();
                    p.ParameterName
=para.Key.ToString();
                    p.Value
=para.Value;

                    cmd.Parameters.Add(p);
                }

            }

            
return cmd;
        }


        
public static int ExecuteNonQuery(string sql,bool IsProc)
        
{
            
return ExecuteNonQuery(sql,IsProc,null);
        }

        
public static int ExecuteNonQuery(string sql,bool IsProc,Hashtable paras)
        
{        
            ADODB ado
=new ADODB();
            IDbConnection con
=ado.getConnection();
            IDbCommand cmd
=makeCommand(ado,sql,IsProc,paras);
            cmd.Connection
=con;
            
try
            
{
                con.Open();
                
int count=cmd.ExecuteNonQuery();
                
return count;
            }

            
catch(Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                
if(con.State!=ConnectionState.Closed)con.Close();
            }

        }

        
public static DataSet ExecuteDataSet(string sql,bool IsProc)
        
{
            
return ExecuteDataSet(sql,IsProc,null);
        }

        
public static DataSet ExecuteDataSet(string sql,bool IsProc,Hashtable paras)
        
{
            ADODB ado
=new ADODB();
            IDbConnection con
=ado.getConnection();
            
try
            
{
                IDbCommand cmd
=makeCommand(ado,sql,IsProc,paras);
                cmd.Connection
=con;
                IDbDataAdapter da
=ado.getDataAdapter();
                da.SelectCommand
=cmd;
                DataSet ds
=new DataSet();
                da.Fill(ds);
                
return ds;
            }

            
catch(Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                
if(con.State!=ConnectionState.Closed)con.Close();
            }

        }

        
public static DataTable ExecuteDataTable(string sql,bool IsProc)
        
{
            
return ExecuteDataTable(sql,IsProc,null);
        }

        
public static DataTable ExecuteDataTable(string sql,bool IsProc,Hashtable paras)
        
{
            
return ExecuteDataSet(sql,IsProc,paras).Tables[0];
        }

        
public static DataRow ExecuteDataRow(string sql,bool IsProc,Hashtable paras)
        
{
            
return ExecuteDataTable(sql,IsProc,paras).Rows[0];
        }

        
public static DataRow ExecuteDataRow(string sql,bool IsProc)
        
{
            
return ExecuteDataTable(sql,IsProc).Rows[0];
        }

        
public static object ExecuteValue(string sql,bool IsProc,Hashtable paras)
        
{
            
return ExecuteDataRow(sql,IsProc,paras)[0];
        }

        
public static object ExecuteValue(string sql,bool IsProc)
        
{
            
return ExecuteDataRow(sql,IsProc)[0];
        }

        
public static bool IsExist(string sql,bool IsProc)
        
{
            
if(ExecuteDataTable(sql,IsProc).Rows.Count>0)
                
return true;
            
else
                
return false;
        }

        
public static bool IsExist(string sql,bool IsProc,Hashtable paras)
        
{
            
if(ExecuteDataTable(sql,IsProc,paras).Rows.Count>0)
                
return true;
            
else
                
return false;
        }

    }

}

 

IDBHelper.cs

 

using System;
using System.Data;

namespace Base.DBHelper
{
 
/// <summary>
 
/// DBHelperInterface 的摘要说明。
 
/// </summary>

 public interface IDBHelper
 
{
  IDbConnection getConnection();
  IDbCommand getCommand();
  IDbDataAdapter getDataAdapter();
  IDbDataParameter getParameter();
 }

}


 

OleDb.cs

 

using System;
using System.Data;

namespace Base.DBHelper
{
 
/// <summary>
 
/// DBHelperInterface 的摘要说明。
 
/// </summary>

 public interface IDBHelper
 
{
  IDbConnection getConnection();
  IDbCommand getCommand();
  IDbDataAdapter getDataAdapter();
  IDbDataParameter getParameter();
 }

}


 

SqlServer.cs

 

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace Base.DBHelper
{
 
/// <summary>
 
/// SqlServer 的摘要说明。
 
/// </summary>

 public class SqlServer:IDBHelper
 
{
  
public IDbConnection getConnection()
  
{
   
return new SqlConnection();
  }

  
public IDbCommand getCommand()
  
{
   
return new SqlCommand();
  }

  
public IDbDataAdapter getDataAdapter()
  
{
   
return new SqlDataAdapter();
  }

  
public IDbDataParameter getParameter()
  
{
   
return new SqlParameter();
  }

 }

}


原创粉丝点击