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>
  • 相关阅读:
    Android_EditText
    JAVA_Gson_example
    JAVA_Gson
    JAVA_eclipse 保留Java文件时自动格式化代码和优化Import
    JAVA_JSON_example
    JAVA_JSON
    JAVA_HttpClientUtils
    Android_Gallery
    JAVA_JDBC
    day05 Pyhton学习
  • 原文地址:https://www.cnblogs.com/kfarvid/p/mybatis.html
Copyright © 2011-2022 走看看