如何解決IBatis.net與MySQL連接問題
由于筆者最近在做一個跨數(shù)據(jù)庫操作的測試,開始做IBatisNet (IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SQL Server2005的測試時,使用都很順利,但是使用IBatisNet+ MySQL(5.1)的時候,卻出現(xiàn)了一些問題。經(jīng)過努力和網(wǎng)上收集終于解決了,下面把問題和解決辦法一一貼出來共享。
問題描述:
1. 錯誤提示Check the MySQL。
出現(xiàn)這個問題首先請下載mySQL-connector-net,如果已經(jīng)下載并安裝了,繼續(xù)檢查IBatisNet的providers.config文件里的MySQL的provider節(jié)點的enabled是否設(shè)為“true”了,如果設(shè)為“true”,繼續(xù)檢查provider,官方提供的配置有些使用動態(tài)鏈接庫文件版本很老,你需要手動去修改,例:
修改前:
- <provider
 - name="MySQL"
 - description="MySQL, MySQL provider 1.0.7.30072"
 - enabled="false"
 - assemblyName="MySQL.Data,
 - Version=1.0.7.30072, 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"
 - />
 
修改后(加亮這個一定要注意,如果為false,是不能連接數(shù)據(jù)庫成功的):
- <provider
 - name="MySQL"
 - description="MySQL,
 - MySQL provider V6.3.2.0"
 - enabled="true"
 - assemblyName="MySQL.Data, Version=6.3.2.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"
 - />
 
2. 錯誤提示 Unable to open connection to "MySQL, MySQL provider V6.3.2.0"。
出現(xiàn)這樣的錯誤可能是Configure方法指定的配置文件的鏈接字符串有點問題,一下是我的,僅供參考。
- <?xml version="1.0" encoding="utf-8" ?>
 - <SQLMapConfig xmlns=
 - "http://ibatis.apache.org/dataMapper" xmlns:xsi=
 - "http://www.w3.org/2001/XMLSchema-instance">
 - <!--以上為固定格式,從這里開始以下是用戶配置項 -->
 - <settings>
 - <!-- 該選項指示是否使用緩存,默認(rèn)為true -->
 - <setting cacheModelsEnabled="true"/>
 - <!-- 當(dāng)該選項為true時,
 - 你在調(diào)用指定的映射時你總是必須給出完整的名稱例如:
 - queryForObject(“Namespace.statement.Id”);
 - -->
 - <setting useStatementNamespaces="false" />
 - </settings>
 - <!-- 數(shù)據(jù)驅(qū)動提供類配置文件的路徑和文件名 -->
 - <providers resource="providers.config" />
 - <!-- 指定一個屬性源,相當(dāng)與設(shè)置一些屬性變量,
 - 該文件請查看下面 -->
 - <!--指定數(shù)據(jù)源${datasource} ${database}
 - ${userid} ${password}
 - 為DataBase.config定義的值-->
 - <database>
 - <!--<provider name="ByteFx"></provider>
 - <dataSource name="IBatisNet"
 - connectionString="Database=zy_test;Data Source=
 - localhost;User Id=root;Password=1234"/>-->
 - <provider name="MySQL"></provider>
 - <dataSource name="IBatisNet"
 - connectionString="Host=localhost;UserName=
 - root;Password=1234;Database=zy_test;Port=3306;
 - CharSet=utf8;Allow Zero Datetime=true"/>
 - </database>
 - <!--指定映射的文件的位置 -->
 - <SQLMaps>
 - <!-- 從程序集中
 - <SQLMap embedded="${root}Person.xml,${assembly}" />-->
 - <!-- 從文件中-->
 - <SQLMap resource="SQLDetailXml/SystemXml/RoleInfo.xml" />
 - <SQLMap resource="SQLDetailXml/SystemXml/ModuleInfo.xml" />
 - <SQLMap resource="SQLDetailXml/SystemXml/UserInfo.xml" />
 - </SQLMaps>
 - </SQLMapConfig>
 
3. 錯誤提示 Character set 'gbk' is not supported。
出現(xiàn)此問題,可能你用了底版本的MySQL-connector-net,因為在MySQL Connector 1.07中提供的字符編碼是有限的,找到不到web.config中設(shè)置的編碼類型,沒有g(shù)bk,換個版本高的MySQL Connector 。
【編輯推薦】















 
 
 
 
 
 
 