在C#操作数据库时,C#提供了system.data.sqlclient和system.data.oracleclient。但是这种方式存在一个问题,如果换一种数据库,就要把所以涉及到数据库操作的地方都统统改一遍,而对于某些数据导入导出的地方,更是麻烦,如果数据库种类是在运行期间才设置,那么后台的代码就更麻烦。
所以在这里问一下,在项目中是使用专用的sqlclient还是oracleclient来操作数据库还是使用OLE DB?各有什么利弊?

解决方案 »

  1.   

    可以把数据操作层封装一下。如果你的项目是那种需要适应多种数据库的程序,那么就用Oledb吧,换个数据库就换一个连接字符串,这样方便。
      

  2.   

    有IDbConnection,IDataCommand等,你把这些封装一下,通过数据工厂来实例化一个数据访问类,然后就可以通过修改连接来连接不同的数据库,不过只能使用通用的sql语句,数据库的异构也要注意,例如sqlserver和oracle,参数命名不一样,sql要求@前缀,ora不需要,sql有identity字段,但ora没有,甚至有些数据库连存储过程都不支持,这些问题你都必须要了解的。
      

  3.   

    最简单的笨办法:在VS里CTRL+F,选择文件夹,查找替换~~~
      

  4.   

    如果要换数据库的话,还是用oledb好。“C#提供了system.data.sqlclient和system.data.oracleclient”,但是它不是提供所有数据库的。用oledb你可以随意更换数据库,只要更换下连接字符串就可以。
      

  5.   

    system.data.sqlclient包含有关专门操作SqlServer数据库的类,
    如SqlConnection,SqlCommand,SqlDateAdapter等,
    而Oledb中则包含的是操作所有数据库的类,通用性比较强。
    oledb速度要慢些,牺牲了速度来换取通用性。