欢迎投稿

今日深度:

如何解决IBatis.net与MySQL连接问题

如何解决IBatis.net与MySQL连接问题


由于笔者最近在做一个跨数据库操作的测试,开始做IBatisNet IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SQL Server2005的测试时,使用都很顺利,但是使用IBatisNet+ MySQL5.1)的时候,却出现了一些问题。经过努力和网上收集终于解决了,下面把问题和解决办法一一贴出来共享。

问题描述:

1. 错误提示Check the MySQL。

出现这个问题首先请下载mySQL-connector-net,如果已经下载并安装了,继续检查IBatisNet的providers.config文件里的MySQL的provider节点的enabled是否设为“true”了,如果设为“true”,继续检查provider,官方提供的配置有些使用动态链接库文件版本很老,你需要手动去修改,例:

修改前:

  1. <provider      
  2.  
  3.       name="MySQL"      
  4.  
  5.       description="MySQL, MySQL provider 1.0.7.30072"      
  6.  
  7.       enabled="false"      
  8.  
  9.       assemblyName="MySQL.Data,   
  10.       Version=1.0.7.30072, Culture=neutral,   
  11.       PublicKeyToken=c5687fc88969c44d" connectionClass="MySQL.Data.MySQLClient.MySQLConnection"      
  12.  
  13.       commandClass="MySQL.Data.MySQLClient.MySQLCommand"      
  14.  
  15.       parameterClass="MySQL.Data.MySQLClient.MySQLParameter"      
  16.  
  17.       parameterDbTypeClass="MySQL.Data.MySQLClient.MySQLDbType"      
  18.  
  19.       parameterDbTypeProperty="MySQLDbType"      
  20.  
  21.       dataAdapterClass="MySQL.Data.MySQLClient.MySQLDataAdapter"      
  22.  
  23.       commandBuilderClass="MySQL.Data.MySQLClient.MySQLCommandBuilder"      
  24.  
  25.       usePositionalParameters="false"      
  26.  
  27.       useParameterPrefixInSQL="true"      
  28.  
  29.       useParameterPrefixInParameter="true"      
  30.  
  31.       parameterPrefix="?"    
  32.  
  33.       allowMARS="false"         
  34.  
  35.   />   
  36.  

修改后(加亮这个一定要注意,如果为false,是不能连接数据库成功的):

  1. <provider    
  2.  
  3.     name="MySQL"    
  4.  
  5.     description="MySQL,   
  6.     MySQL provider V6.3.2.0"    
  7.  
  8.     enabled="true"    
  9.  
  10.     assemblyName="MySQL.Data, Version=6.3.2.0,   
  11.     Culture=neutral, PublicKeyToken=c5687fc88969c44d"   
  12.     connectionClass=  
  13.     "MySQL.Data.MySQLClient.MySQLConnection"    
  14.  
  15.     commandClass=  
  16.     "MySQL.Data.MySQLClient.MySQLCommand"    
  17.  
  18.     parameterClass=  
  19.     "MySQL.Data.MySQLClient.MySQLParameter"    
  20.  
  21.     parameterDbTypeClass=  
  22.     "MySQL.Data.MySQLClient.MySQLDbType"    
  23.  
  24.     parameterDbTypeProperty=  
  25.     "MySQLDbType"    
  26.  
  27.     dataAdapterClass=  
  28.     "MySQL.Data.MySQLClient.MySQLDataAdapter"    
  29.  
  30.     commandBuilderClass=  
  31.     "MySQL.Data.MySQLClient.MySQLCommandBuilder"    
  32.  
  33.     usePositionalParameters="false"    
  34.  
  35.     useParameterPrefixInSQL="true"    
  36.  
  37.     useParameterPrefixInParameter="true"    
  38.  
  39.     parameterPrefix="?"    
  40.  
  41.     allowMARS="false"    
  42.  
  43.   />   
  44.  

2. 错误提示 Unable to open connection to "MySQL, MySQL provider V6.3.2.0"。

出现这样的错误可能是Configure方法指定的配置文件的链接字符串有点问题,一下是我的,仅供参考。

  1. <?xml version="1.0" encoding="utf-8" ?>    
  2.  
  3. <SQLMapConfig xmlns=  
  4. "http://ibatis.apache.org/dataMapper" xmlns:xsi=  
  5. "http://www.w3.org/2001/XMLSchema-instance">    
  6.  
  7. <!--以上为固定格式,从这里开始以下是用户配置项    -->    
  8.  
  9. <settings>    
  10.  
  11. <!-- 该选项指示是否使用缓存,默认为true -->    
  12.  
  13. <setting cacheModelsEnabled="true"/>    
  14.  
  15. <!-- 当该选项为true时,  
  16. 你在调用指定的映射时你总是必须给出完整的名称例如:  
  17. queryForObject(“Namespace.statement.Id”);     
  18.  -->    
  19.  
  20. <setting useStatementNamespaces="false" />    
  21.  
  22. </settings>    
  23.  
  24. <!-- 数据驱动提供类配置文件的路径和文件名 -->    
  25.  
  26. <providers resource="providers.config" />    
  27.  
  28. <!-- 指定一个属性源,相当与设置一些属性变量,  
  29. 该文件请查看下面   -->    
  30.  
  31. <!--指定数据源${datasource} ${database}   
  32. ${userid} ${password}   
  33. DataBase.config定义的值-->    
  34.  
  35. <database>    
  36.  
  37. <!--<provider name="ByteFx"></provider>    
  38.  
  39. <dataSource name="IBatisNet"   
  40. connectionString="Database=zy_test;Data Source=  
  41. localhost;User Id=root;Password=1234"/>-->    
  42.  
  43. <provider name="MySQL"></provider>    
  44.  
  45. <dataSource name="IBatisNet"   
  46. connectionString="Host=localhost;UserName=  
  47. root;Password=1234;Database=zy_test;Port=3306;  
  48. CharSet=utf8;Allow Zero Datetime=true"/>    
  49.  
  50. </database>    
  51.  
  52. <!--指定映射的文件的位置    -->    
  53.  
  54. <SQLMaps>    
  55.  
  56. <!-- 从程序集中     
  57.  
  58. <SQLMap embedded="${root}Person.xml,${assembly}" />-->    
  59.  
  60. <!-- 从文件中-->    
  61.  
  62. <SQLMap resource="SQLDetailXml/SystemXml/RoleInfo.xml" />    
  63.  
  64. <SQLMap resource="SQLDetailXml/SystemXml/ModuleInfo.xml" />    
  65.  
  66. <SQLMap resource="SQLDetailXml/SystemXml/UserInfo.xml" />    
  67.  
  68. </SQLMaps>    
  69.  
  70. </SQLMapConfig>   
  71.  

3. 错误提示 Character set 'gbk' is not supported。

出现此问题,可能你用了底版本的MySQL-connector-net,因为在MySQL Connector 1.07中提供的字符编码是有限的,找到不到web.config中设置的编码类型,没有gbk,换个版本高的MySQL Connector 。

www.htsjk.Com true http://www.htsjk.com/shujukugl/17859.html NewsArticle 如何解决IBatis.net与MySQL连接问题 由于笔者最近在做一个跨数据库操作的测试,开始做IBatisNet IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SQL Server2005的测试时,使用都很顺利,但是使用IBat...
评论暂时关闭