DBFlute.NETを使った.NETアプリのApp.configの設定について

93 views
Skip to first unread message

cuted...@gmail.com

unread,
Oct 21, 2021, 7:55:42 AM10/21/21
to DBFluteユーザの集い
志水です。
お世話になっております。

※久しぶりの投稿なので投稿方法間違ってたらごめんなさい。

DBFlute.NETを使った.NETアプリのApp.configの設定の
postgresqlの接続の設定方法がわかりません。
マニュアル読んでいくとSQLServer以外はアセンブリの設定が必要と
書かれているのですが、
oracleとmysqlはあるのですが肝心のpostgresqlの
サンプルコードが見つからず困っています。
設定経験のある方教えて頂けないでしょうか。
よろしくお願いいたします。

<App.config抜粋>

      <dataSource name="PGSQL">
        <provider>PostgreSQL</provider>
        <connectionString>"Server=localhost,5432;Database=hoehogedb;User ID=postgres;Password=hogepass"</connectionString>
        <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
      </dataSource>

   <assemblys>
      <!-- for .NET4.0 -->
      <!--<assembly>MySql.Data, version=6.3.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d</assembly>-->
      <!-- for .NET2.0 -->
      <!--<assembly>MySql.Data, version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d</assembly>-->
      <!-- Oracle Data Provider for .NET を使用する場合に必要です。 -->
      <!-- <assembly>Oracle.DataAccess, version=1.102.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342</assembly>-->
      <!--<assembly>Oracle.DataAccess, version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342</assembly>-->
    </assemblys>


kubo

unread,
Oct 21, 2021, 10:39:30 AM10/21/21
to DBFluteユーザの集い
jfluteです。

志水さん、こんばんは。

自分は、postgresqlで接続した経験はないですが、検索すると.NETの汎用的な話ではあると思うので、
検索して参考になる記事を探してみると良いと思います。(というかそれしかない!?)

// C#(.NET系)からPostgreSQLへ接続(TransactionScopeや分散トランザクションについて)
↑設定ファイルじゃなくプログラムで接続してるのでそのまま同じではないですが、ヒントになるところあるかもしれません。


あと、PostgreSQLのDataProviderのオフィシャルページとか見てみると良いかと思います。
(あとあと、Seasar.NETにPostgreSQLのSampleないですかね。。。)

竹内学

unread,
Oct 21, 2021, 10:46:15 PM10/21/21
to dbf...@googlegroups.com
竹内です。
清水さんこんにちは。

App.confgにDB接続パスワードを平文で記述するのはヤバイいので、
IConnectionStringを実装したクラスをApp.configで指定するようにしています。

ConnectionStringHelper.cs
using Npgsql;
using Seasar.Quill.Database.DataSource.Connection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestApp.Helper {
    public class ConnectionStringHelper : IConnectionString {
        public string GetConnectionString() {
            var builder = new NpgsqlConnectionStringBuilder();
            builder.Host = Properties.Settings.Default.DbServerHost;
            builder.Port = Properties.Settings.Default.DbServerPort;
            builder.Database = Properties.Settings.Default.DbServerDatabase;
            builder.Username = Properties.Settings.Default.DbServerUserName;
            builder.Password = DecryptPassword(Properties.Settings.Default.DbServerPassword); // 設定ファイル上は暗号化すること
            builder.Timeout = Properties.Settings.Default.DbServerTimeout;
            builder.CommandTimeout = Properties.Settings.Default.DbServerCommandTimeout;
            return builder.ConnectionString;
        }
    }
}


App.configは次の通りです。
  <quill>
    <dataSources>
        <dataSource name="DataSource">
            <provider>PostgreSQL</provider>
            <connectionString>TestApp.Helper.ConnectionStringHelper</connectionString>
            <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
        </dataSource>
    </dataSources>
    <assemblys>
      <assembly>Seasar</assembly>
      <assembly>Seasar.Dao</assembly>
      <assembly>Seasar.Windows</assembly>
      <assembly>Seasar.Dxo</assembly>
    </assemblys>
  </quill>

ご参考までに

以下独り言
DBFlute.NETは非常に便利なんですが、
さすがにSeaser.NETを使い続けられなくなってきているし、
DBFlute.NET自体も大量のワーニングを吐いてくれるので、
.NET5 対応してくれないかなぁと思う今日この頃です。


2021年10月21日(木) 20:55 cuted...@gmail.com <cuted...@gmail.com>:
--
このメールは Google グループのグループ「DBFluteユーザの集い」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには dbflute+u...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/dbflute/f72b1bae-b917-4041-bf16-08baf7110e7dn%40googlegroups.com にアクセスしてください。


upa...@nifty.com

unread,
Oct 22, 2021, 12:25:29 AM10/22/21
to dbf...@googlegroups.com
uparrowと申します。

だいぶ前ですが、.NET Framework3.5のWindowsのFormアプリで
postgresqlへ接続したときは、次のようなconfigの設定で利用しておりました。

<dataSources>
<dataSource name="ds">
<provider>PostgreSQL</provider>
<connectionString>"Server=XXXXXXXXX;Database=XXXXXXXX;UserID=XXXXXXXX;Password=XXXXXXX;Port=5433;"</connectionString>
<class>Seasar.Extension.Tx.Impl.TxDataSource</class>
</dataSource>
</dataSources>
<assemblys>
<!-- Npgsql -->
<assembly>Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7</assembly>
</assemblys>

Npgsql.dll、Mono.Security.dll のDLLが必要でした。

今でも現役で動いているシステムです。。。
> > DBFlute.NETを使った.NET <http://dbflute.xn--net-x93bta5z342q.net>
> > アプリのApp.configの設定の
> > <https://groups.google.com/d/msgid/dbflute/f72b1bae-b917-4041-bf16-08baf7110e7dn%40googlegroups.com?utm_medium=email&utm_source=footer>
> > にアクセスしてください。
> >
>
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループから退会し、グループからのメールの配信を停止するには dbflute+u...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/dbflute/CAK8ywK-vxM3c6i%2Bii4JtHrG7WcKcs_vomWBe3ryHGAnKsqNZ0w%40mail.gmail.com にアクセスしてください。

taknb2nch

unread,
Oct 22, 2021, 1:04:30 AM10/22/21
to dbf...@googlegroups.com
taknb2nchです。

私もuparrowさんと同じような設定で使用しております。
<assembly>部分のVersionとPublickKeyTokenさえ合わせておけば大丈夫かと。

ほぼメンテはしておりませんが、私のところも現役で動いています。

さすがにSeasar.NETに依存するDBFlute.NETは使いやすいとはいえなくなってきたので、
参考にさせていただきつつ、必要な部分だけを自分で再実装して使っています。

2021年10月22日(金) 13:25 <upa...@nifty.com>:
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/dbflute/20211022132421.DC66.B3926137%40nifty.com にアクセスしてください。

cuted...@gmail.com

unread,
Oct 22, 2021, 1:18:54 AM10/22/21
to DBFluteユーザの集い

  志水です。

jfluteさん、竹内さん、uparrowさん、taknb2nchさん
情報ありがとうございます。

uparrowさんのおかげでNpgsqlのアセンブリの書き方がわかりました。

jfluteさんのおかげでNpgsqlをnugetでインストールが必要なこと。
使えるバージョンを見つけるのにちょっと苦労しましたが
.NET Framework4.6を使っているので、Npgsqlは4.0を使いました。

竹内さんのおかげでConnectionStringHelperでの接続書式がわかりました。
APP.configで書いていたけど接続できなくて困っていたので助かりました。

そして無事接続に成功しました。
貴重な情報ありがとうございました。


>DBFlute.NETは非常に便利なんですが、
>さすがにSeaser.NETを使い続けられなくなってきているし、
>DBFlute.NET自体も大量のワーニングを吐いてくれるので、
>.NET5 対応してくれないかなぁと思う今日この頃です。

私も同意見です。今までのシステムをそのまま移行させたいですしねー。。
けど、これだけのものを作る脳みそがないのでいまのDBFLuteの資源の一部だけ使えるようにしました。
Blazor Serverで使いたくて前にいろいろとCoreで使えなかと質問させてもらってたんですが
DBFluteのテンプレートを試行錯誤で改造してDBFluteのCDefやCDefと項目のマッピング、Entiy、
Query()の自動生成SQLの値部分の置換関数作ったりしてなんとか使用できるようにしました。
最初はEntityFramework使ってたんですがおかしな挙動がでて不安定だったので
読込はDapper 書き込みはDAOを使ってやってます。
元のようにすごく便利ではないですが、それでもクラスを1から作るよりは
結構な恩恵を受けています。







2021年10月22日金曜日 14:04:30 UTC+9 taknb2nch:

kubo

unread,
Oct 24, 2021, 5:08:00 AM10/24/21
to DBFluteユーザの集い
jfluteです。

解決できて良かったです。

そして、フォローしてくださったみなさまありがとうございます。

Google GroupのML, すっかり誰も見てないんじゃないか?って最近不安に思っていたもので...。


ただ、あまりMLで技術話をする時代じゃなくなってきて、
特に若い人とかMLに入ってくる人がなかなかいない印象です。
(恐らく、メールで技術やり取りするって習慣がほとんど無いんじゃないかと)

ということで、すでにご存知の方も多いかと思いますが、
「DBFlute用の誰でも入れるSlack」を用意しています。

// チャット (DBFlute Slack)
そちらでDBFlute.NET関連の情報交換などしても構いませんし、
ニーズあるようでしたら.NET用のチャンネルも作りますので、
そういう環境をどんどん活用してくださってOKですので。




cuted...@gmail.com

unread,
Oct 25, 2021, 11:18:18 AM10/25/21
to DBFluteユーザの集い
志水です。

いつもありがとうございます。
私も久しぶりの投稿で回答来るかなぁなんて思ってましたが
たくさんのフォローいただいてうれしかったです。

Slackにとりあえず参加しました。
Slackは最近使い始めたのであまり機能は知らないんですけど
結構便利ですよね。

また、何かわからないことがあったら投稿しますので
よろしくお願いいたします。




2021年10月24日日曜日 18:08:00 UTC+9 jflute:
Reply all
Reply to author
Forward
0 new messages