今天看一个程序时碰到一段令我困惑的代码,这个程序本来连的是Access数据库。怎么会在这段程序中用到与连接SQL 数据库相关的类?而且在其它代码中多处出现了“DbBase”,不知这段代码要实现一个什么功能?作用是什么?小弟是新手刚刚接触ASP.NET,恳请各位高手指教,谢谢!

解决方案 »

  1.   

    代码如下:
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.Configuration;namespace shop.DbBase
    {
    /// <summary>
    /// SqlBase.
    /// </summary>
    public class SqlBase
    { #region "Fields of SqlBase calss" /// <summary>
    /// connecting to Database
    /// </summary>
    protected static string sConn = ConfigurationSettings.AppSettings["ConnectionString"]; #endregion #region "Functions of SqlBase class"
    public SqlBase()
    {
    //
    // TODO: Add constructor logic here
    //
    } /// <summary>
    /// executing SQL commands
    /// </summary>
    /// <param name="strSQL">string</param>
    /// <returns>return int</returns>
    public static int ExecuteSql(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    myCmd.ExecuteNonQuery();
    return 0;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    ///executing SQL commands
    /// </summary>
    /// <param name="strSQL">要执行的SQL语句,为字符串类型string</param>
    /// <returns>返回执行情况,整形int</returns>
    public static int ExecuteSqlEx(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);

    try
    {
    myCn.Open();
    SqlDataReader myReader = myCmd.ExecuteReader();
    if(myReader.Read())
    {
    return 0;
    }
    else
    {
    throw new Exception("Value Unavailable!");
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// get dataset
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(DataSet)</returns>
    public static DataSet ExecuteSql4Ds(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    try
    {
    myCn.Open();
    SqlDataAdapter sda = new SqlDataAdapter(strSQL,myCn);
    DataSet ds = new DataSet("ds");
    sda.Fill(ds);
    return ds;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCn.Close();
    }
    }
    /// <summary>
    /// get single value
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(int)</returns>
    public static int ExecuteSql4Value(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("value unavailable!");
    }
    else
    {
    return (int)r;
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// get object
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(object)</returns>
    public static object ExecuteSql4ValueEx(string strSQL)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("object unavailable!");
    }
    else
    {
    return r;
    }
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// execute multipul SQL commands 
    /// </summary>
    /// <param name="strSQLs">string</param>
    /// <returns>int</returns>
    public static int ExecuteSqls(string[] strSQLs)
    {
    SqlConnection myCn = new SqlConnection(sConn);
    SqlCommand myCmd = new SqlCommand();
    int j=strSQLs.Length; try
    {
    myCn.Open();
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    SqlTransaction myTrans = myCn.BeginTransaction(); try
    {
    myCmd.Connection = myCn;
    myCmd.Transaction = myTrans; foreach(string str in strSQLs)
    {
    myCmd.CommandText = str;
    myCmd.ExecuteNonQuery();
    }
    myTrans.Commit();
    return 0;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    myTrans.Rollback();
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    } #endregion
    }
      

  2.   

    /// <summary>
    /// OleBase.
    /// </summary>
    public class OleBase
    { #region "Fields of OleBase calss" /// <summary>
    /// connecting to Database
    /// </summary>
    protected static string strConn = ConfigurationSettings.AppSettings["ConnectionString"]; #endregion #region "Functions of OleBase class"
    public OleBase()
    {
    //
    // TODO: Add constructor logic here
    //
    } /// <summary>
    /// executing SQL commands
    /// </summary>
    /// <param name="strSQL">string</param>
    /// <returns>return int</returns>
    public static int ExecuteSql(string strSQL)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    OleDbCommand myCmd = new OleDbCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    myCmd.ExecuteNonQuery();
    return 0;
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message/* + " at databse :" + strConn*/);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    ///executing SQL commands
    /// </summary>
    /// <param name="strSQL">要执行的SQL语句,为字符串类型string</param>
    /// <returns>返回执行情况,整形int</returns>
    public static int ExecuteSqlEx(string strSQL)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    OleDbCommand myCmd = new OleDbCommand(strSQL,myCn);

    try
    {
    myCn.Open();
    OleDbDataReader myReader = myCmd.ExecuteReader();
    if(myReader.Read())
    {
    return 0;
    }
    else
    {
    throw new Exception("Value Unavailable!");
    }
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// get dataset
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(DataSet)</returns>
    public static DataSet ExecuteSql4Ds(string strSQL)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    try
    {
    myCn.Open();
    OleDbDataAdapter sda = new OleDbDataAdapter(strSQL,myCn);
    DataSet ds = new DataSet("ds");
    sda.Fill(ds);
    return ds;
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCn.Close();
    }
    }
    /// <summary>
    /// get single value
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(int)</returns>
    public static int ExecuteSql4Value(string strSQL)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    OleDbCommand myCmd = new OleDbCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("value unavailable!");
    }
    else
    {
    return (int)r;
    }
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// get object
    /// </summary>
    /// <param name="strSQL">(string)</param>
    /// <returns>(object)</returns>
    public static object ExecuteSql4ValueEx(string strSQL)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    OleDbCommand myCmd = new OleDbCommand(strSQL,myCn);
    try
    {
    myCn.Open();
    object r = myCmd.ExecuteScalar();
    if(Object.Equals(r,null))
    {
    throw new Exception("object unavailable!");
    }
    else
    {
    return r;
    }
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    /// <summary>
    /// execute multipul SQL commands 
    /// </summary>
    /// <param name="strSQLs">string</param>
    /// <returns>int</returns>
    public static int ExecuteSqls(string[] strSQLs)
    {
    OleDbConnection myCn = new OleDbConnection(strConn);
    OleDbCommand myCmd = new OleDbCommand();
    int j=strSQLs.Length; try
    {
    myCn.Open();
    }
    catch(OleDbException e)
    {
    throw new Exception(e.Message);
    }
    OleDbTransaction myTrans = myCn.BeginTransaction(); try
    {
    myCmd.Connection = myCn;
    myCmd.Transaction = myTrans; foreach(string str in strSQLs)
    {
    myCmd.CommandText = str;
    myCmd.ExecuteNonQuery();
    }
    myTrans.Commit();
    return 0;
    }
    catch(OleDbException e)
    {
    myTrans.Rollback();
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    } #endregion
    }
    }
      

  3.   

    “这个程序本来连的是Access数据库。怎么会在这段程序中用到与连接SQL 数据库相关的类?”
    连接不同数据库只是连接字符串不同,操作数据库的SQl及操作类是差不多的
      

  4.   

    命名空间是DBbase,他下面有两个类SqlBase(支持slqserver),OleBase(支持access)
      

  5.   

    主要是考虑扩展我觉得.就是如果你升到SQLSERVER的时候,读的字符改变一下就可以了.