zoukankan      html  css  js  c++  java
  • 关于iBatis.NET连接各数据库时提示没找到数据库驱动的依赖文件

    iBatis.net在连接oracle数据库时使用的是:oracleClient1.0 这个是系统自带的驱动,配置上即可,使用的连接配置为:

      <database>
        <provider name="oracleClient1.0"/>
        <dataSource name="IBatis" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.195.236.6)(PORT = 1521)))(CONNECT_DATA =(SID = exoa)(SERVER = DEDICATED)));User Id=exoa;Password=password;"/>
      </database>


    后来改为使用mysql数据库做测试,查看了ibatis数据库驱动配置文件(Providers.config)原来使用的是1.6*的版本,已经很旧了,随便找了个mysql.data.dll文件引入到工程后,提示“Message=未能加载文件或程序集“MySql.Data, Version=1.6.****,”的字眼,也就是说,引入的新版的dll和iBatis中配置的驱动不一致引起的,配置里面说是引入了1.6版本的,现在找的dll看了下版本,应该是:6.2.3.0。 我们如何去修改iBatis的驱动配置文件呢,我们可以通过ILSPY软件进行对dll反编译,第一页就是这个dll的相关信息,如下:

    // D:********LibDB_LibmysqlMySql.Data.dll
    // MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
    
    // Architecture: AnyCPU (64-bit preferred)
    // Runtime: .NET 2.0

    把这个信息更新到Providers.config对应的mysql驱动位置即可,如下:

      <provider
          name="MySql"
          description="MySQL, MySQL provider 6.2.3.0"
          enabled="true"
          assemblyName="MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"
          commandClass="MySql.Data.MySqlClient.MySqlCommand"
          parameterClass="MySql.Data.MySqlClient.MySqlParameter"
          parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
          parameterDbTypeProperty="MySqlDbType"
          dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
          commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix="?"
          allowMARS="false"
      />

    注意,这里的Name可以随便起的, 但你使用的时候,需要哪个驱动,配置iBatis的dataBase的时候,provider name 就是填该Name的值。description这里指描述,也应该是可以随便写的,关键的是enabled如果为true,则iBatis加载的时候,就会去加载相应的驱动文件,它就会去 引入assemblyName的信息去加载,如果加载不了就会报错,因此,如果实际上没使用该驱动的时候,你又去启用它,运行时报错,你就会觉得莫名其妙,没使用该数据库,为何提示“未能加载文件或程序集”的错误,因此,你需要检查该Providers.config是否正常启用和停止使用某个数据库驱动。好了,这里mySql引入了新的驱动,需要修改assemblyNameVersionPublicKeyToken为反编译结果中的对应的值即可。下面贴出mysql配置的信息:

      <database>
        <provider name="MySql"/>
        <dataSource name="IBatis" connectionString="Server=localhost;Database=com_tool; User=root;Password=rootroot;"/>
      </database>
  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/kfarvid/p/mybatis.html
Copyright © 2011-2022 走看看