现在的位置: 首页 > 综合 > 正文

能连接4种数据库(外加文件操作)的DatabaseHelper类

2012年03月24日 ⁄ 综合 ⁄ 共 6218字 ⁄ 字号 评论关闭

首先在工程中引用各种数据库组件.
包括:SqlServer,OleDb,Oracle,ODBC.
调用方法很简单,在创建该类的实例对象时初始化connectionstring数据库连接字符串即可.
该类提供了几种初始化重载方法,可以直接将连接字符串传入,或者通过web.config配置文件ConnectionStrings["connectionstring"].可以直接指明数据库类型,也可以不指明(该类有自动分析功能).
该类代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Configuration;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.Odbc;
using System.Data.OracleClient;
using System.IO;

namespace BinaryIntellect.DataAccess
{
    
public class DatabaseHelper:IDisposable
    
{
        
private string strConnectionString;
        
private DbConnection objConnection;
        
private DbCommand objCommand;
        
private DbProviderFactory objFactory = null;
        
private bool boolHandleErrors;
        
private string strLastError;
        
private bool boolLogError;
        
private string strLogFile;

        
public DatabaseHelper(string connectionstring,Providers provider)
        
{
            strConnectionString 
= connectionstring;
            
switch (provider)
            
{
                
case Providers.SqlServer:
                    objFactory 
= SqlClientFactory.Instance;
                    
break;
                
case Providers.OleDb:
                    objFactory 
= OleDbFactory.Instance;
                    
break;
                
case Providers.Oracle:
                    objFactory 
= OracleClientFactory.Instance;
                    
break;
                
case Providers.ODBC:
                    objFactory 
= OdbcFactory.Instance;
                    
break;
                
case Providers.ConfigDefined:
                    
string providername=ConfigurationManager.ConnectionStrings["connectionstring"].ProviderName;
                    
switch (providername)
                    
{
                        
case "System.Data.SqlClient":
                            objFactory 
= SqlClientFactory.Instance;
                            
break;
                        
case "System.Data.OleDb":
                            objFactory 
= OleDbFactory.Instance;
                            
break;
                        
case "System.Data.OracleClient":
                            objFactory 
= OracleClientFactory.Instance;
                            
break;
                        
case "System.Data.Odbc":
                            objFactory 
= OdbcFactory.Instance;
                            
break;
                    }

                    
break;

            }

            objConnection 
= objFactory.CreateConnection();
            objCommand 
= objFactory.CreateCommand();

            objConnection.ConnectionString 
= strConnectionString;
            objCommand.Connection 
= objConnection;
        }


        
public DatabaseHelper(Providers provider):this(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString,provider)
        
{
        }


        
public DatabaseHelper(string connectionstring): this(connectionstring, Providers.SqlServer)
        
{
        }


        
public DatabaseHelper():this(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString,Providers.ConfigDefined)
        
{
        }


        
public bool HandleErrors
        
{
            
get
            
{
                
return boolHandleErrors;
            }

            
set
            
{
                boolHandleErrors 
= value;
            }

        }


        
public string LastError
        
{
            
get
            
{
                
return strLastError;
            }

        }


        
public bool LogErrors
        
{
            
get
            
{
                
return boolLogError;
            }

            
set
            
{
                boolLogError
=value;
            }

        }


        
public string LogFile
        
{
            
get
            
{
                
return strLogFile;
            }

            
set
            
{
                strLogFile 
= value;
            }

        }


        
public int AddParameter(string name,object value)
        
{
            DbParameter p 
= objFactory.CreateParameter();
            p.ParameterName 
= name;
            p.Value
=value;
            
return objCommand.Parameters.Add(p);
        }


        
public int AddParameter(DbParameter parameter)
        
{
            
return objCommand.Parameters.Add(parameter);
        }


        
public DbCommand Command
        
{
            
get
            
{
                
return objCommand;
            }

        }


        
public void BeginTransaction()
        
{
            
if (objConnection.State == System.Data.ConnectionState.Closed)
            
{
                objConnection.Open();
            }

            objCommand.Transaction 
= objConnection.BeginTransaction();
        }


        
public void CommitTransaction()
        
{
            objCommand.Transaction.Commit();
            objConnection.Close();
        }


        
public void RollbackTransaction()
        
{
            objCommand.Transaction.Rollback();
            objConnection.Close();
        }


        
public int ExecuteNonQuery(string query)
        
{
            
return ExecuteNonQuery(query, CommandType.Text, ConnectionState.CloseOnExit);
        }


        
public int ExecuteNonQuery(string query,CommandType commandtype)
        
{
            
return ExecuteNonQuery(query, commandtype, ConnectionState.CloseOnExit);
        }


        
public int ExecuteNonQuery(string query,ConnectionState connectionstate)
        
{
            
return ExecuteNonQuery(query,CommandType.Text,connectionstate);
        }


        
public int ExecuteNonQuery(string query,CommandType commandtype, ConnectionState connectionstate)
        
{
            objCommand.CommandText 
= query;
            objCommand.CommandType 
= commandtype;
            
int i=-1;
            
try
            
{
                
if (objConnection.State == System.Data.ConnectionState.Closed)
                
{
                    objConnection.Open();
                }

                i 
= objCommand.ExecuteNonQuery();
            }

            
catch (Exception ex)
            
{
                HandleExceptions(ex);
            }

            
finally
            
{
                objCommand.Parameters.Clear();
                
if (connectionstate == ConnectionState.CloseOnExit)
                
{
                    objConnection.Close();
                }

            }


            
return i;
        }


        
public object ExecuteScalar(

抱歉!评论已关闭.