iBATISでNpgsql2.xを使う。
iBATISの設定方法は以下を参考にさせていただきました。
http://d.hatena.ne.jp/gsf_zero1/20070930/p1
まず、以下のDLLの参照追加*1
Npgsql.dll Mono.Security.dll
SqlMap.configに設定を記述する。
<?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--DBのユーザ命などは、別ファイルから取得するように設定--> <!--SqlMap.config中の${〜〜〜}は、下記ファイルで記述した値に置換されます。--> <properties > <property resource="./setting/properties.config"/> </properties> <settings> <setting useStatementNamespaces="true"/> <setting cacheModelsEnabled="false"/> <setting useReflectionOptimizer="true"/> <setting validateSqlMap="true"/> </settings> <providers resource="${root}\setting\providers.config"/> <database> <provider name="${provider}"/> <dataSource name="${DatasourceName}" connectionString="Server=${server};Port=${port};Database=${Database};User Id=${UserId};Password=${Passwd}"/> </database> <sqlMaps> <!-- ログイン --> <sqlMap resource="${root}\SQL\login.xml" /> </sqlMaps> </sqlMapConfig>
なお、分散トランザクションを使う場合は、connectionStringに"Enlist=true"を記述。
connectionString="Server=${server};Port=5432;Database=${Database};User Id=${UserId};Password=${Passwd};Enlist=true"/>
properties.configを書いておきます。
SqlMap.configの${〜〜〜}を置き換える値を定義しています。
<?xml version="1.0" encoding="utf-8" ?> <settings> <!--共通項目--> <add key="provider" value="PostgreSql2.0.2.0"/> <add key="root" value="C:\MyProject" /> <add key="server" value="localhost"/> <add key="port" value="5432"/> <add key="Database" value="test_db"/> <add key="DatasourceName" value="test_db"/> <add key="UserId" value="test_user" /> <add key="Passwd" value="12345"/> </settings>
providers.configを、下記のようにする。
*2
<?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="PostgreSql2.0.2.0" description="PostgreSql, Npgsql provider V2.0.2.0" enabled="true" assemblyName="Npgsql, Version=2.0.2.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" connectionClass="Npgsql.NpgsqlConnection" commandClass="Npgsql.NpgsqlCommand" parameterClass="Npgsql.NpgsqlParameter" parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType" parameterDbTypeProperty="NpgsqlDbType" dataAdapterClass="Npgsql.NpgsqlDataAdapter" commandBuilderClass="Npgsql.NpgsqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":" allowMARS="true" /> </providers>
以上で完成です。