zoukankan      html  css  js  c++  java
  • 实现工厂模式下不同的数据库连接

    首先是配置文件:其中的providerName就是指定的不同数据库类型

    1. <connectionStrings> 
    2. <addnameaddname="..."connectionString="..."providerName="System.Data.OleDb"/> 
    3.  
    4. <addnameaddname="..."connectionString="..."providerName="System.Data.SqlClient"/> 
    5. </connectionStrings> 

        下面看一下使用工厂的这个类:

    1. class DataBaseFac  
    2. {  
    3. private DbConnection cnn;//抽象类型  
    4. private DbCommand cmd;//抽象类型  
    5. private DbProviderFactory provider;  
    6. public DataBaseFac()  
    7. {  
    8.  
    9. //从配置文件中取出标示数据库类型的字符串  
    10. string providerName=ConfigurationManager.ConnectionStrings[1].ProviderName;  
    11.  
    12. //根据上一部的结果工厂创建一个对应的实例  
    13. provider=DbProviderFactories.GetFactory(providerName);  
    14.  
    15. //使用该实例就可以创建对应的connection,command和adapater对象了  
    16.  
    17. //调试的时候可以看到这几个对象都变成了相应于数据库类型的  
    18. cnn=provider.CreateConnection();  
    19. cnn.ConnectionString=ConfigurationManager.ConnectionStrings[1].ConnectionString;  
    20. cmd=provider.CreateCommand();  
    21. cmd.Connection=cnn;  
    22. }  
    23.  
    24. //执行一次查询,返回数据表  
    25.  
    26. public DataTable ExcuteQuery(string queryString)  
    27. {  
    28. DataTable result=new DataTable();  
    29. DbDataAdapter adapter=provider.CreateDataAdapter();  
    30. cmd.CommandType=CommandType.Text;  
    31. cmd.CommandText=queryString;  
    32. adapter.SelectCommand=cmd;  
    33. try  
    34. {  
    35. cnn.Open();  
    36. adapter.Fill(result);  
    37. }  
    38. catch  
    39. {  
    40. result=null;  
    41. }  
    42. finally  
    43. {  
    44. cnn.Close();  
    45. }  
    46. return result;  
    47.  
  • 相关阅读:
    oracle问题之死锁 (一)
    linux下oracle调试小知识
    Oracle实例名,服务名等概念区别与联系
    oracle 数据库、实例、服务名、SID
    Linux下启动/关闭Oracle
    Oracle监听器
    Oracle数据库、实例、用户、表空间、表之间的关系
    在Centos7上安装Oracle
    理财入门书籍
    [C/C++] VS 2015 C++ 插件
  • 原文地址:https://www.cnblogs.com/yuloe2012/p/2779732.html
Copyright © 2011-2022 走看看