訪問Access數據庫

using System;
using System.IO; 
using System.Collections;
using System.Data; 
using System.Data.OleDb;   
namespace Exam_Manage.DAL
{
    
/// <summary>
    
/// 試題數據訪問基礎類
    
/// </summary>

    public abstract class DbSQL
    
{
        
public DbSQL()
        
{
        }

        
protected static string connectionString=@"provider=microsoft.jet.oledb.4.0; " + "Data Source= " +Directory.GetCurrentDirectory() + @"mdbdb.mdb";
        
        
#region  執行簡單SQL語句

        
/// <summary>
        
/// 執行SQL語句,返回影響的記錄數
        
/// </summary>
        
/// <param name="SQLString">SQL語句</param>
        
/// <returns>影響的記錄數</returns>

        public static int ExecuteSql(string SQLString)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString)) 
            
{                
                
using (OleDbCommand cmd = new OleDbCommand(SQLString,connection))
                
{
                    
try
                    
{        
                        connection.Open();
                        
int rows=cmd.ExecuteNonQuery();
                        
return rows;
                    }

                    
catch(System.Data.OleDb.OleDbException E)
                    
{                    
                        connection.Close();
                        
throw new Exception(E.Message);
                    }

                }
                
            }

        }

        
        
/// <summary>
        
/// 執行多條SQL語句,實現數據庫事務。
        
/// </summary>
        
/// <param name="SQLStringList">多條SQL語句</param>        

        public static void ExecuteSqlTran(ArrayList SQLStringList)
        
{
            
using (OleDbConnection conn = new OleDbConnection(connectionString))
            
{
                conn.Open();
                OleDbCommand cmd 
= new OleDbCommand();
                cmd.Connection
=conn;
                
                OleDbTransaction tx
=conn.BeginTransaction();            
                cmd.Transaction
=tx;                
                
try
                
{           
                    
for(int n=0;n<SQLStringList.Count;n++)
                    
{
                        
string strsql=SQLStringList[n].ToString();
                        
if (strsql.Trim().Length>1)
                        
{
                            cmd.CommandText
=strsql;
                            cmd.ExecuteNonQuery();
                        }

                    }
                                        
                    tx.Commit();                    
                }

                
catch(System.Data.OleDb.OleDbException E)
                
{        
                    tx.Rollback();
                    
throw new Exception(E.Message);
                }

            }

        }

        
/// <summary>
        
/// 執行帶一個存儲過程參數的的SQL語句。
        
/// </summary>
        
/// <param name="SQLString">SQL語句</param>
        
/// <param name="content">參數內容,比如一個字段是格式複雜的文章,有特殊符號,可以通過這個方式添加</param>
        
/// <returns>影響的記錄數</returns>

        public static int ExecuteSql(string SQLString,string content)
        
{                
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{
                OleDbCommand cmd 
= new OleDbCommand(SQLString,connection);        
                System.Data.OleDb.OleDbParameter  myParameter 
= new System.Data.OleDb.OleDbParameter( "@content",OleDbType.VarChar);
                myParameter.Value 
= content ;
                cmd.Parameters.Add(myParameter);
                
try
                
{
                    connection.Open();
                    
int rows=cmd.ExecuteNonQuery();
                    
return rows;
                }

                
catch(System.Data.OleDb.OleDbException E)
                
{                
                    
throw new Exception(E.Message);
                }

                
finally
                
{
                    cmd.Dispose();
                    connection.Close();
                }
    
            }

        }
        
        
        
/// <summary>
        
/// 執行一條計算查詢結果語句,返回查詢結果(object)。
        
/// </summary>
        
/// <param name="SQLString">計算查詢結果語句</param>
        
/// <returns>查詢結果(object)</returns>

        public static object GetSingle(string SQLString)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{
                
using(OleDbCommand cmd = new OleDbCommand(SQLString,connection))
                
{
                    
try
                    
{
                        connection.Open();
                        
object obj = cmd.ExecuteScalar();
                        
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
                        
{                    
                            
return null;
                        }

                        
else
                        
{
                            
return obj;
                        }
                
                    }

                    
catch(System.Data.OleDb.OleDbException e)
                    
{                        
                        connection.Close();
                        
throw new Exception(e.Message);
                    }
    
                }

            }

        }

        
/// <summary>
        
/// 執行查詢語句,返回SqlDataReader
        
/// </summary>
        
/// <param name="strSQL">查詢語句</param>
        
/// <returns>SqlDataReader</returns>

        public static OleDbDataReader ExecuteReader(string strSQL)
        
{
            OleDbConnection connection 
= new OleDbConnection(connectionString);            
            OleDbCommand cmd 
= new OleDbCommand(strSQL,connection);                
            
try
            
{
                connection.Open();    
                OleDbDataReader myReader 
= cmd.ExecuteReader();
                
return myReader;
            }

            
catch(System.Data.OleDb.OleDbException e)
            
{                                
                
throw new Exception(e.Message);
            }
            
            
        }
        
        
/// <summary>
        
/// 執行查詢語句,返回DataSet
        
/// </summary>
        
/// <param name="SQLString">查詢語句</param>
        
/// <returns>DataSet</returns>

        public static DataSet Query(string SQLString)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{
                DataSet ds 
= new DataSet();
                
try
                
{
                    connection.Open();
                    OleDbDataAdapter command 
= new OleDbDataAdapter(SQLString,connection);                
                    command.Fill(ds,
"ds");
                }

                
catch(System.Data.OleDb.OleDbException ex)
                
{                
                    
throw new Exception(ex.Message);
                }
            
                
return ds;
            }
            
        }



        
#endregion


        
#region 執行帶參數的SQL語句

        
/// <summary>
        
/// 執行SQL語句,返回影響的記錄數
        
/// </summary>
        
/// <param name="SQLString">SQL語句</param>
        
/// <returns>影響的記錄數</returns>

        public static int ExecuteSql(string SQLString,params OleDbParameter[] cmdParms)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{                
                
using (OleDbCommand cmd = new OleDbCommand())
                
{
                    
try
                    
{        
                        PrepareCommand(cmd, connection, 
null,SQLString, cmdParms);
                        
int rows=cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        
return rows;
                    }

                    
catch(System.Data.OleDb.OleDbException E)
                    
{                
                        
throw new Exception(E.Message);
                    }

                }
                
            }

        }

                    
        
/// <summary>
        
/// 執行一條計算查詢結果語句,返回查詢結果(object)。
        
/// </summary>
        
/// <param name="SQLString">計算查詢結果語句</param>
        
/// <returns>查詢結果(object)</returns>

        public static object GetSingle(string SQLString,params OleDbParameter[] cmdParms)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{
                
using (OleDbCommand cmd = new OleDbCommand())
                
{
                    
try
                    
{
                        PrepareCommand(cmd, connection, 
null,SQLString, cmdParms);
                        
object obj = cmd.ExecuteScalar();
                        cmd.Parameters.Clear();
                        
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
                        
{                    
                            
return null;
                        }

                        
else
                        
{
                            
return obj;
                        }
                
                    }

                    
catch(System.Data.OleDb.OleDbException  e)
                    
{                
                        
throw new Exception(e.Message);
                    }
                    
                }

            }

        }

        
        
/// <summary>
        
/// 執行查詢語句,返回SqlDataReader
        
/// </summary>
        
/// <param name="strSQL">查詢語句</param>
        
/// <returns>SqlDataReader</returns>

        public static OleDbDataReader ExecuteReader(string SQLString,params OleDbParameter[] cmdParms)
        
{        
            OleDbConnection connection 
= new OleDbConnection(connectionString);
            OleDbCommand cmd 
= new OleDbCommand();                
            
try
            
{
                PrepareCommand(cmd, connection, 
null,SQLString, cmdParms);
                OleDbDataReader myReader 
= cmd.ExecuteReader();
                cmd.Parameters.Clear();
                
return myReader;
            }

            
catch(System.Data.OleDb.OleDbException e)
            
{                                
                
throw new Exception(e.Message);
            }
                    
            
        }
        
        
        
/// <summary>
        
/// 執行查詢語句,返回DataSet
        
/// </summary>
        
/// <param name="SQLString">查詢語句</param>
        
/// <returns>DataSet</returns>

        public static DataSet Query(string SQLString,params OleDbParameter[] cmdParms)
        
{
            
using (OleDbConnection connection = new OleDbConnection(connectionString))
            
{
                OleDbCommand cmd 
= new OleDbCommand();
                PrepareCommand(cmd, connection, 
null,SQLString, cmdParms);
                
using( OleDbDataAdapter da = new OleDbDataAdapter(cmd) )
                
{
                    DataSet ds 
= new DataSet();    
                    
try
                    
{                                                
                        da.Fill(ds,
"ds");
                        cmd.Parameters.Clear();
                    }

                    
catch(System.Data.OleDb.OleDbException ex)
                    
{                
                        
throw new Exception(ex.Message);
                    }
            
                    
return ds;
                }
                
            }
            
        }



        
private static void PrepareCommand(OleDbCommand cmd,OleDbConnection conn,OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms) 
        
{
            
if (conn.State != ConnectionState.Open)
                conn.Open();
            cmd.Connection 
= conn;
            cmd.CommandText 
= cmdText;
            
if (trans != null)
                cmd.Transaction 
= trans;
            cmd.CommandType 
= CommandType.Text;//cmdType;
            if (cmdParms != null
            
{
                
foreach (OleDbParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }

        }


        
#endregion
    

    }


    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章