none
微软的企业库5.0 里面如何判断当前数据库的类型 RRS feed

  • 问题

  • 我的服务端是通用的,即很多个项目共用了一个服务端,而这些项目用到的数据库不同,当客户端开发人员发送SQL 到服务器的时候,想判断一下当前服务端用的是哪种数据库,以便于发送特定的SQL 语法到服务器,不知道是企业库里没有提供库这样的属性还是我没有找到,请知道的朋友指点一下,谢谢!


    相信自己,坚持下去。
    2011年4月8日 5:13

答案

  • 你好!

    根据连接字符串中的 ProviderName  判断


    知识改变命运,奋斗成就人生!
    • 已标记为答案 毅无涯 2011年4月10日 8:15
    2011年4月8日 5:31
    版主
  • 呃,不能在各个数据库里面写同名的存储过程么?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 毅无涯 2011年4月10日 8:15
    2011年4月8日 17:49
    版主
  • 你好!

    根据连接字符串中的 ProviderName  判断


    知识改变命运,奋斗成就人生!


    在代码里面好象不太容易处理吧,那我是不是要代码读 App.Config 文件,然后再定位到当前数据库,再找到 ProviderName  ?

     

    Database db = DatabaseFactory.CreateDatabase();
    Console.WriteLine(db.DbProviderFactory.ToString());

    输出:MySql.Data.MySqlClient.MySqlClientFactory

    我想根据这个输出来判断,包括"Mysql" 的就是MYSQL 数据库,但这样会不会开支一个数据库接连呢?这个连接会什么时候释放呢?

     

     

     


    相信自己,坚持下去。

    http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.database.dbproviderfactory(v=PandP.50).aspx

    通过DbProviderFactory 就可以判断出是使用的哪个数据库提供工厂,进而可以判断出使用的什么数据库,这里仅仅是读取了配置而已,不会开支一个数据库连接

    http://msdn.microsoft.com/en-us/library/bb748675(v=PandP.50).aspx


    Raymond Tang (Microsoft C# MVP)
    Denn Ich Gehoer nur mir
    微软中文论坛同城社区成都QQ群:74268428
    My Chinese Blog
    Chengdu,Sichuan Province,China
    • 已标记为答案 毅无涯 2011年4月10日 8:14
    2011年4月10日 5:01
    版主

全部回复

  • 你好!

    根据连接字符串中的 ProviderName  判断


    知识改变命运,奋斗成就人生!
    • 已标记为答案 毅无涯 2011年4月10日 8:15
    2011年4月8日 5:31
    版主
  • 你好!

    根据连接字符串中的 ProviderName  判断


    知识改变命运,奋斗成就人生!


    在代码里面好象不太容易处理吧,那我是不是要代码读 App.Config 文件,然后再定位到当前数据库,再找到 ProviderName  ?

     

    Database db = DatabaseFactory.CreateDatabase();
    Console.WriteLine(db.DbProviderFactory.ToString());

    输出:MySql.Data.MySqlClient.MySqlClientFactory

    我想根据这个输出来判断,包括"Mysql" 的就是MYSQL 数据库,但这样会不会开支一个数据库接连呢?这个连接会什么时候释放呢?

     

     

     


    相信自己,坚持下去。
    2011年4月8日 5:51
  • 呃,不能在各个数据库里面写同名的存储过程么?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 毅无涯 2011年4月10日 8:15
    2011年4月8日 17:49
    版主
  • 呃,不能在各个数据库里面写同名的存储过程么?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    这是个不错的方法,不过我开发的是个平台,不想和数据库关联太紧.
    相信自己,坚持下去。
    2011年4月9日 2:18
  • 你好!

    根据连接字符串中的 ProviderName  判断


    知识改变命运,奋斗成就人生!


    在代码里面好象不太容易处理吧,那我是不是要代码读 App.Config 文件,然后再定位到当前数据库,再找到 ProviderName  ?

     

    Database db = DatabaseFactory.CreateDatabase();
    Console.WriteLine(db.DbProviderFactory.ToString());

    输出:MySql.Data.MySqlClient.MySqlClientFactory

    我想根据这个输出来判断,包括"Mysql" 的就是MYSQL 数据库,但这样会不会开支一个数据库接连呢?这个连接会什么时候释放呢?

     

     

     


    相信自己,坚持下去。

    http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.database.dbproviderfactory(v=PandP.50).aspx

    通过DbProviderFactory 就可以判断出是使用的哪个数据库提供工厂,进而可以判断出使用的什么数据库,这里仅仅是读取了配置而已,不会开支一个数据库连接

    http://msdn.microsoft.com/en-us/library/bb748675(v=PandP.50).aspx


    Raymond Tang (Microsoft C# MVP)
    Denn Ich Gehoer nur mir
    微软中文论坛同城社区成都QQ群:74268428
    My Chinese Blog
    Chengdu,Sichuan Province,China
    • 已标记为答案 毅无涯 2011年4月10日 8:14
    2011年4月10日 5:01
    版主