这位兄弟的想法很好哦,
可是我想无论访问哪种数据库,
无非也就是那么几个语句(connection & command ...)
如果可以写成通用的话,MS公司当初就把它写成通用的了。
不知道各位有什么想法!

解决方案 »

  1.   

    我现在是用asp.net 写的。在webconfig 中设置 连接的 connection 和 server 等。
    用一个类 里面有个参数返回连接语句。其他页面都继承该类。
    如果对你有用,我发上来。
      

  2.   

    我现在能实现对sqlserver的访问,其他应该也是一样的吧。i think.
      

  3.   

    我这里有现在的例子:[email protected]
      

  4.   

    lhx1977(清水无鱼)我给你发了邮件,MSN上加你了
      

  5.   

    去GotDotNet.com搜索:Data Access Block 3.0
      

  6.   

    TO: lhx1977(清水无鱼)
    _____________________
    如我们在MSN上说的,这段文件与我的要求有点差距,呵呵。
    感谢支持,当然绝对不会亏待老兄的!
      

  7.   

    To:dorame(candid) 
    vs.net哪个例子里有这个类?
      

  8.   

    因為已有很多的同事已給你了,看你的行為不像是個言郵必行的人,所以呢...
    嘿...     名字呢:  EntityDataAccess
      

  9.   

    http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp?frame=true
      

  10.   

    看看微软的PetShop3.0这个例子吧,,,这个例子包括访问Oracle和SQLServer 两种数据库的类。
      

  11.   

    TO: lxy0423((zjl)) 
    _______________________你说很多同事都发给我了,真是冤枉!
    截至现在只有清水无鱼兄发给我一份,我非常非常感谢他,虽然不是我想要的通用数据访问类,我依然感激他对初学者的照顾,我给他的分数不会绝对少于50分。你说:“看你的行為不像是個言郵必行的人”,这个我不同意,请看我的问题,我从来没有不及时结贴的。如果有什么疏漏的地方,请明言,非常感谢!如果你能把那个数据服务层发给我,我感激不尽,因为应该是比较成熟的技术,保证分数决不低于500——如果怕我食言,或者确有不便,那么我也不好强人所难!人无信不立,我若言行不一,老兄大可告知天下。我还想继续深造,继续学习,还想在这里混下去,不会自毁名声的。我原来是做VB的,在“计算机开发者俱乐部”的技术论坛上ID叫“小微软”,也算薄有微名,现在刚开始学C#,还请老兄和各位兄弟多多指教,多多栽培,这里先谢过了!关于分数的问题,我再次声明:如果是你说的那个成熟的类,我给不低于500的分;其他的人给访问的类,满足我说的3个条件,决不低于200分;清水无鱼兄我能够和他MSN联系,会另外开贴给分;这个100分就分给帮我顶的兄弟了!!!谢谢你和诸位兄弟的支持和关注!
      

  12.   

    TO: LighBlade(光之刃) 谢谢!网易163邮箱现在好像有点问题(中午还好的),我会随时刷新的!谢谢你,等我收到立马开贴给分!再次感谢!
      

  13.   

    LighBlade(光之刃) 请到新帖子结分,我刚收到,没看完,先给200吧,编译过以后再给,非常感谢!!!!!!!!!!!!!!!!!!!!
      

  14.   

    其实你用OleDbClient类不就是通用数据访问类吗?何必再来画蛇添足?
      

  15.   

    gpontop(),你说的对,但是对sqlserver来说,sqlclient据说比oledb效率高很多!
      

  16.   

    为什么不用微软提供的呢
    他提供的SqlHelper组件全世界可能已经有n多公司在用了,非常棒的东西http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp?frame=true
      

  17.   

    sqlhelper,好东西,不过是for sqlserver的
      

  18.   

     public void data_open(string User_Name,string User_PassWord)
     {
      
     string strConnection;


     strConnection="Provider=Microsoft.Jet.OleDb.4.0;";
     strConnection+=@"Data Source=C:\inetpub\wwwroot\data.mdb";
     OleDbConnection objConnection=new OleDbConnection(strConnection);
     string strSQL="Select * from sou";
     DataSet objDataSet=new DataSet();
        
     OleDbDataAdapter objAdapter=new OleDbDataAdapter(strSQL,objConnection);
     objAdapter.Fill(objDataSet,"good");
     DataTable objTable=null;
    }这个是access2000的
      

  19.   

    public DataSet Query(string SQLText,int StartIndex,int PageSize,string srcTableName)
    {
    SqlConnection myConnection=new SqlConnection(ConfigurationSettings.AppSettings["connstring"]);
    DataSet ds = new DataSet();
    SqlDataAdapter myCommand = new SqlDataAdapter(SQLText,myConnection);
    myCommand.Fill(ds,StartIndex,PageSize,srcTableName);
    return ds;
    }
    这个是sql的
      

  20.   

    谢谢 bbwolfcool(bb_wolf_cool),但这还不能算是完整的数据访问类。
      

  21.   

    先设置一配置文件,如:Connection.ini文件,存在windows系统目录下,将数据库连接参数写入文件里,每回连接之前从文件里读入。适合多种数据库连接。包括MYSQL,FireBride\DB2都可以。
      

  22.   

    DbFactory  ->GetDb()DbRoot
      

  23.   

    SqlRoot
    OleDbRoot
    OracleRootDbSqlText
    ....可惜不方便给你
      

  24.   

    这是一个老版本的 , 只支持 SQl Serverhttp://www.csdn.net/cnshare/soft/16/16749.shtm
      

  25.   

    也可以把数据库连接参数写入web.config文件中。
      

  26.   

    using System;
    using System.Data;
    using System.Data.OleDb;namespace pdvi
    {
    public class Pdvi
    {
    OleDbConnection OleDbConn = new OleDbConnection();
    OleDbDataAdapter OleDbAdap = new OleDbDataAdapter();
    string connstr = null;
    string connuid = null;
    string connpwd = null;
    bool Statu = false; //数据源状态标志默认是关闭 public Pdvi() //构造函数
    {
    } public Pdvi(string ConnStr)
    {
    initialize(ConnStr); //调用初始化私有方法
    } private void initialize(string ConnStr) //初始化私有方法
    {
    OpenConnString(ConnStr); //调用数据访问方法
    } private void OpenConnString(string ConnStr) //调用方法打开数据源
    {
    try
    {
    this.OleDbConn.ConnectionString = ConnStr.ToString();
    this.OleDbConn.Open();
    }
    catch(Exception e)
    {
    throw e;
    }
    finally
    {
    if (this.OleDbConn.State == System.Data.ConnectionState.Open)
    {
    this.Statu = true; //数据源被打开标志
    }
    else
    {
    this.Statu = false;
    }
    }
    } public void OpenConnString() //调用方法打开数据源
    {
    try
    {
    this.OleDbConn.ConnectionString = this.connstr.ToString();
    this.OleDbConn.Open();
    }
    catch(Exception e)
    {
    throw e;
    }
    finally
    {
    if (this.OleDbConn.State == System.Data.ConnectionState.Open)
    {
    this.Statu = true; //数据源被打开标志
    }
    else
    {
    this.Statu = false;
    }
    }
    } public void SetConnStr(string connstr) //设置连接数据源的字符串
    {
    this.connstr = connstr;
    } public void SetConnUid(string connuid) //设置连接数据源的用户名
    {
    this.connuid = connuid;
    } public void SetConnPwd(string connpwd) //设置连接数据源的通行码
    {
    this.connpwd = connpwd;
    } public string GetConnStr() //获取连接数据源的字符串
    {
    return this.connstr;
    } public string GetConnUid() //获取连接数据源的用户名
    {
    return this.connuid;
    } public string GetConnPwd() //获取连接数据源的通行证
    {
    return this.connpwd;
    } public OleDbDataReader GetDataReader(string sSQL)
    {
    OleDbCommand cmd = new OleDbCommand(sSQL,this.OleDbConn); try
    {
    if (this.Statu == true)
    {
    return cmd.ExecuteReader();
    }
    else
    {
    return null;
    }
    }
    catch (Exception e)
    {
    throw e;
    }
    finally
    {
    cmd.Dispose();
    this.OleDbConn.Close();
    this.OleDbConn.Dispose();
    }
    } public DataSet GetDataSet(string sSQL)
    {
    this.OleDbAdap = new OleDbDataAdapter(sSQL,this.OleDbConn);
    DataSet Ds = new DataSet(); try
    {
    if (this.Statu == true)
    {
    this.OleDbAdap.Fill(Ds);
    return Ds;
    }
    else
    {
    return null;
    }
    }
    catch (Exception e)
    {
    throw e;
    }
    finally
    {
    this.OleDbConn.Close();
    this.OleDbAdap.Dispose();
    }
    } }
    }看看这个可以吗!???
    只要你有ConnectionString就可以用,包含了对数据源的连接,因为采用的是OLEDB的所以只要是ODBC支持的数据源都可以,如果你想快建议还是MSSQL2000+SQLDB来的快!
    内置两种方法,一种是返回影响记录行数的方法主要针对于(UPDATE、INSERT、DELETE)语句另一种是返回DataSet方法,针对与(SELETE)语句。其他的如果你感兴趣的话可以继续跟帖!
      

  27.   

    TO教父
    我根据网上的一篇文章也改装了一个数据访问类,就是根据设计工厂的思路写的,我们可以交流一下。
    代码这里贴的太长了,有MSN或QQ吗?
    我MSN:[email protected]
    QQ:43597868(只在家里上)