none
iBATIS.NETのSELECTで例外が発生します RRS feed

  • 質問

  • O/RマッパーとしてiBATIS.NETを使用したいのですが、SELECTで例外が発生します。どなたか解決策をご存じないでしょうか?

    エラーメッセージ

    The error occurred while Validate SqlMap config.

    Exeと同じフォルダに配置したファイル

    • Castle.DynamicProxy.dll
    • Castle.DynamicProxy.license.txt
    • IBatisNet.Common.dll
    • IBatisNet.Common.Logging.Log4Net.dll
    • IBatisNet.Common.Logging.Log4Net.xml
    • IBatisNet.Common.xml
    • IBatisNet.DataMapper.dll
    • IBatisNet.DataMapper.xml
    • log4net.dll
    • log4net.license.txt
    • log4net.xml
    • provider.xsd
    • providers.config
    • SqlMap.Config
    • SqlMap.xsd
    • SqlMapConfig.xsd
    • Book.xml

    配置したファイルのうち参照設定したファイル

    • Castle.DynamicProxy.dll
    • IBatisNet.Common.dll
    • IBatisNet.Common.Logging.Log4Net.dll
    • IBatisNet.DataMapper.dll
    • log4net.dll

    providers.configの内容

    <?xml version="1.0" encoding="utf-8"?>
    <providers 
    xmlns="http://ibatis.apache.org/providers" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
    <clear/>
      <provider
         name="sqlServer2005"
         enabled="true"
         description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" 
         assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
         connectionClass="System.Data.SqlClient.SqlConnection" 
         commandClass="System.Data.SqlClient.SqlCommand"
         parameterClass="System.Data.SqlClient.SqlParameter"
         parameterDbTypeClass="System.Data.SqlDbType"
         parameterDbTypeProperty="SqlDbType"
         dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
         commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
         usePositionalParameters = "false"
         useParameterPrefixInSql = "true"
         useParameterPrefixInParameter = "true" 
         parameterPrefix="@"
         allowMARS="true"
        /> 
    </providers>
    
    
    SqlMap.Configの内容(BOM付きのUTF-8で保存しています)
    ※追記です。サーバーエクスプローラ接続文字列からコピーペーストしているので、接続文字列が正しいことは実証済みです。
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <sqlMapConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">
    
      <providers resource="providers.config" />
    
      <database>
        <provider name="sqlServer2005"/>
        <dataSource name="sample" connectionString="Data Source=(local);Initial Catalog=ORSample;Integrated Security=True" />
      </database>
    
      <sqlMaps>
        <sqlMap resource="./Book.xml" />
      </sqlMaps>
    
    </sqlMapConfig>
    

    Book.xmlの内容

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <sqlMap namespace="Book"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="SqlMap.xsd">
    
      <alias>
        <typeAlias alias="Book" type="iBATISTest.Book, iBATISTest" />
      </alias>
    
      <resultMaps>
        <resultMap id="booksResult" class="Book">
          <result property="ISBN" column="ISBN" />
          <result property="Title" column="Title" />
        </resultMap>
      </resultMaps>
    
      <statements>
    
    <select id="getBooksInfo" resultMap="booksResult">
      SELECT ISBN,Title FROM Book
    </select>
    
      </statements>
    
    </sqlMap>
    

    テーブルのスキーマ

    • テーブル名:Book
    • カラム:ISBN(varchar(50))、Title(varchar(50))

    Program.cs

    using System;
    using System.Collections.Generic;
    using IBatisNet.DataMapper;
    namespace iBATISTest {
    	class Program {
    		static void Main(string[] args) {
    			IList<Book> books = null;
    			books = Mapper.Instance().QueryForList<Book>("getBooksInfo"null);
    			Console.WriteLine(books[0].Title);
    			Console.ReadLine();
    		}
    	}
    }

     

    Book.cs

    namespace iBATISTest {
    	public class Book {
    		public string ISBN { getset; }
    		public string Title { getset; }
    	}
    }
    

    環境

    • SQL Server 2005
    • Visual Studio 2010
    • .Net Framework 2.0
    • iBATIS.NET 1.62

    参考にしたページ

    iBATIS.NETにてO/Rマッピングを行う(SQL Maps編):CodeZine

    @IT:特集:ASP.NETで実践するO/Rマッピング(iBATIS.NET編)

     

    以上、よろしくお願いします。


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/







    • 編集済み jhashimoto 2011年5月29日 1:56 SqlMap.Configに追記
    2011年5月28日 9:43

回答