是使用ADO。NET访问数据库吧
还是编写通用数据库访问类?

解决方案 »

  1.   

    就是我要通过 ado.net 访问数据库阿.
    所以我想写一个类.专门用来管理于数据库交流的.
      

  2.   

    不知道是不是你想要的,这里有两种连接using System;
    using System.Data.OleDb;namespace RestaurantManager
    {
    /// <summary>
    /// SQLServerWrapper 数据库连接提供类
    /// </summary>
    public class SQLServerWrapper
    {

    //一个静态的连接接口;
    public static System.Data.IDbConnection conn = null;
    /// <summary>
    /// 构造方法,设为私有类型,是防止外部无效的引用;
    /// </summary> //public string RemoteConnectionString = "User ID=sa;Data Source=cnwolfs;Password=cellblue;Initial Catalog=RestaurantManager;Provider='SQLOLEDB.1';";
    public string RemoteConnectionString = "Provider=sqloledb;Data Source=cnwolfs;Initial Catalog=ProjectMass;User Id=sa;Password=cellblue;" ;
    public static string RemoteConnectionStringSQL = "Data Source=cnwolfs;Initial Catalog=ProjectMass;User Id=sa;Password=cellblue;"; public static System.Data.SqlClient.SqlConnection SQLconn = null;

    public SQLServerWrapper()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    System.Data.IDbCommand x=new System.Data.OleDb.OleDbCommand();  if (getSqlConn() == true)
    {
    }
    }
    // /// <summary>
    // /// 数据库连接类型,即判断是System.Data.SqlClient类型或者是System.Data.OleDB类型的。
    // /// </summary>
    private static DBType DataBaseType
    {
    get
    {
    //从配置文件当中读取数据库类型字符串
    string m_DBType=System.Configuration.ConfigurationSettings.AppSettings["DataBase.Type"];
    //如果未设置默认为System.Data.SqlClient类型的连接
    if(m_DBType==null)
    {
    return DBType.SqlClient;
    }
    else
    {
    //如果为空或者为MSSQLServer2000,则使用System.Data.SqlClient类型的连接
    if(m_DBType.Trim()==""||m_DBType.Trim().ToUpper()=="MSSQLSERVER2000"||m_DBType.Trim().ToUpper()=="MSSQLSERVER7")
    {
    return DBType.SqlClient;
    }
    //其它则返回System.Data.OleDB类型的连接
    else
    {
    if(m_DBType.Trim().ToUpper()=="OLEDB")
    {
    return DBType.OleDB;
    }
    }

    }
    return DBType.OleDB;

    }


    }
    /// <summary>
    /// 重载getConn(string)方法,此时连接字符串的标签名将为“DataBase.ConnectionString”
    /// <seealso cref="getConn(string) "/>
    /// </summary>
    /// <returns>返回一个连接</returns>
    public static System.Data.IDbConnection getConn()
    {
    return conn;
    }
    /// <summary>
    /// 获得数据库连接接口
    /// </summary>
    /// <param name="p_ConnStringSetName">一个在Config文件中设置连接字符串的标签名</param>
    /// <returns></returns>
    /// 
    public static bool getSqlConn()
    {
    try
    {
    SQLconn = new System.Data.SqlClient.SqlConnection(RemoteConnectionStringSQL);
    return true;
    }
    catch
    {
    throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,检查网络和服务器状况,然后重新连接登录!");
    }
    } public static bool getIDbConn()
    { string ConnStr="";
    string p_ConnStringSetName;

    p_ConnStringSetName = RemoteConnectionStringSQL; if(p_ConnStringSetName.Trim() == "") 
    {
    ConnStr=System.Configuration.ConfigurationSettings.AppSettings["DataBase.ConnectionString"];
    }
    else
    {
    ConnStr = System.Configuration.ConfigurationSettings.AppSettings[p_ConnStringSetName];
    ConnStr = p_ConnStringSetName;
    }
    if(ConnStr==null||ConnStr=="")
    {
    throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,然后重新连接登录!");
    }
    DBType m_DBType; //=SQLServerWrapper.DataBaseType;
    /* 
    * 注释:我们对前面的编码进行了部分的修改,鉴于System.Data.SqlClient的连接
    * 字符串当中不可能出现"Provider"字样,所以我们根据是否有Provider字样来判断
    * 该连接是基于System.Data.SqlClient的或者System.Data.OleDB的。
    * 参考资料:
    * 可以将 ConnectionString 属性设置为单个单元。(不能为 SqlConnection 对象指定 Provider 属性。) 
    * –或– 
    *
    * 可以设置单个属性(DataSource、Database、UserName 等等)。如果设置单个属性,则将为您生成连接字符串。 
    * 注意 在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅Introduction to ADO.NET Connection Design Tools。

    */
    if(ConnStr.ToLower().IndexOf("provider")==-1) 
    {
    m_DBType=DBType.SqlClient;
    }
    else
    {
    m_DBType=DBType.OleDB;
    }
    try
    {
    if(m_DBType==DBType.SqlClient)
    {
    conn=new System.Data.SqlClient.SqlConnection(ConnStr);
    }
    else
    {
    conn=new System.Data.OleDb.OleDbConnection(ConnStr);
    }
    }
    catch
    {
    throw new Exception("Error to connect DB!");
    }
    return true; } public static bool getIDbConn(string p_ConnStringSetName)
    { string ConnStr="";
    if(p_ConnStringSetName.Trim() == "") 
    {
    ConnStr=System.Configuration.ConfigurationSettings.AppSettings["DataBase.ConnectionString"];
    }
    else
    {
    ConnStr = System.Configuration.ConfigurationSettings.AppSettings[p_ConnStringSetName];
    ConnStr = p_ConnStringSetName;
    }
    if(ConnStr==null||ConnStr=="")
    {
    throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,然后重新连接登录!");
    }
    DBType m_DBType; //=SQLServerWrapper.DataBaseType;
    /* 
    * 注释:我们对前面的编码进行了部分的修改,鉴于System.Data.SqlClient的连接
    * 字符串当中不可能出现"Provider"字样,所以我们根据是否有Provider字样来判断
    * 该连接是基于System.Data.SqlClient的或者System.Data.OleDB的。
    * 参考资料:
    * 可以将 ConnectionString 属性设置为单个单元。(不能为 SqlConnection 对象指定 Provider 属性。) 
    * –或– 
    *
    * 可以设置单个属性(DataSource、Database、UserName 等等)。如果设置单个属性,则将为您生成连接字符串。 
    * 注意 在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅Introduction to ADO.NET Connection Design Tools。

    */
    if(ConnStr.ToLower().IndexOf("provider")==-1) 
    {
    m_DBType=DBType.SqlClient;
    }
    else
    {
    m_DBType=DBType.OleDB;
    }
    try
    {
    if(m_DBType==DBType.SqlClient)
    {
    conn=new System.Data.SqlClient.SqlConnection(ConnStr);
    }
    else
    {
    conn=new System.Data.OleDb.OleDbConnection(ConnStr);
    }
    }
    catch
    {
    throw new Exception("Error to connect DB!");
    }
    return true; }
      

  3.   


    public System.Data.IDataReader SelectData(string SQLString)
    {
    System.Data.IDataReader Result = null; try
    {
    System.Data.IDbCommand command=conn.CreateCommand(); command.CommandText = SQLString;
    command.CommandType = System.Data.CommandType.Text; command.Connection.Close();
    command.Connection.Open();
    command.Prepare();

    Result = command.ExecuteReader();
    }
    catch(Exception ex)
    {
    throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
    }
    return Result;
    } public System.Data.DataSet SelectDataSet(string SQLString)
    {
    System.Data.DataSet Result = new System.Data.DataSet(); try
    {
    System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(SQLString,SQLconn); //System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); myDataAdapter.Fill (Result);
    }
    catch(Exception ex)
    {
    throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
    }
    return Result;
    } public System.Data.DataSet SelectDataSet(string SQLString, string strMappingName)
    {
    System.Data.DataSet Result = new System.Data.DataSet(); try
    {
    System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(SQLString,SQLconn); //System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); myDataAdapter.Fill (Result, strMappingName);
    }
    catch(Exception ex)
    {
    throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
    }
    return Result;
    } public System.Data.DataSet SelectDataSetExchange(string p_strSQL,string p_strTableName)
    {
    int i;
    string strTemp;
    string[] strTableName = p_strTableName.Split(';');
    System.Data.DataSet Result = new System.Data.DataSet(); try
    { System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(p_strSQL,SQLconn); System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); i = 0; foreach (string strTableNameTemp in strTableName)
    {
    if (i > 0)
    {
    strTemp = "Table" + i;
    }
    else
    {
    strTemp = "Table";
    }
    myDataAdapter.TableMappings.Add(strTemp,strTableNameTemp);
    i = i + 1;
    } myDataAdapter.Fill (Result);
    }
    catch(Exception ex)
    {
    throw new Exception("执行查询语句错误!" + ex.Message.ToString() + p_strSQL);
    }
    return Result;
    } /// <summary>
    /// 无结果执行命令
    /// </summary> public void ExecuteNoResult(string SQLString)
    {
    try
    {
    System.Data.IDbCommand command = conn.CreateCommand(); command.CommandText = SQLString;
    command.CommandType = System.Data.CommandType.Text; command.Connection.Close();
    command.Connection.Open();
    command.ExecuteNonQuery();
    }
    catch
    {
    throw new Exception("执行SQL命令错误!");
    }
    }
    }
    /// <summary>
    /// 枚举类型,即一个数据库连接类型的枚举
    /// </summary>
    enum DBType
    {
    SqlClient=0,
    OleDB=1
    }
    }
      

  4.   

    new一个项目是选择一个类库工程,然后将上面代码拷贝到namespace下。上面的连接字符串是从web.config文件中取出的,具体配置给你一段例子:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
     <add key="ConnectionString" value="User ID=????;Password=???;Data Source=???;" />
    </appSettings>
      <system.web>
        代码中是这么用的://从配置文件当中读取数据库类型字符串
    string m_DBType=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];运行后编译成dll文件,然后在cs或vb代码中引用。
      

  5.   

    我给你一个最简单的例子,要改造才能用,数据库是oracle:
    using System;
    using System.Data ;
    using System.Data .OracleClient ;namespace Class1
    {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class DataAccess//处理数据的类
    {
    Inside insideString=new Inside ();//新增一个Inside类的实例 public DataAccess()
    {

    OpenConnection();
    }

    private OracleConnection Connection;
    ~DataAccess()
    {
    CloseConnection();
    }  
    public void OpenConnection()//从配置文件中取出连接字符串
    {
    Connection = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    Connection.Open();//打开数据库的连接
    }  
       public void CloseConnection()
    {
    Connection.Close();



    public DataSet GetDataBySql(string Query)//根据选择条件返回DATASET集合用于在前端绑定数据控件
    {
    string connectionString=Query;                   OracleCommand selectCommand ;
    DataSet ds = new DataSet();
    OpenConnection();
    selectCommand=new OracleCommand (connectionString,Connection);
    OracleDataAdapter data =new OracleDataAdapter ();
    data.SelectCommand =selectCommand;
    data.Fill(ds,"Data");
    //CloseConnection();   
    Connection.Close();
    return ds;
    }
    public void ExecuteQuery(string Query)//执行插入,删除等对数据库的操作
    {

    string connectionString=insideString.insdeString (Query);
    OpenConnection();
    OracleCommand Command = new OracleCommand(connectionString, Connection);
    Command.ExecuteNonQuery();      
    CloseConnection();
    }
    }

    }
      

  6.   

    看下Microsoft SQLHelper已经是2。0了,有源码的,
    不过是SQL版的,改一下就是其他版了。