Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

monodevelopでpostgresqlアクセス

今回は、monodevelopにて直接sqlに接続する方法についてまとめます。
postgresqlmysqlであればサーバ不要で、直接sqlに接続することができます。
sqliteだと出来ないようです。

まぁ、sqlitepostgresqlmysqlは用途が異なるのでそんなものか、と思いますが。

今回はpostgresqlを利用して、monodevelopと直接接続したいと思います。

なお、こちらの記事によりmonodevelopがインストールされていることを前提にします。
elsammit-beginnerblg.hatenablog.com

postgresqlセットアップ

まずは下記でpostgresqlをインストールします。

apt-get install -y postgresql

次にpostgresqlを外部アクセスできるように設定します。

sudo vim /etc/postgresql/10/main/postgresql.conf

によりコンフィグファイルを編集します。
編集箇所ですが、60行目付近のlisten_addressesに対して、

#listen_addresses = 'localhost' 
listen_addresses = '*' 

次に、

vi /etc/postgresql/10/main/pg_hba.conf

に対して100行目あたりを下記の通り編集します。

host    all             all             192.168.56.101/32            md5 ← IPアドレスは必要に応じて変更.

そして再起動を実行。

/etc/init.d/postgresql restart

これでpostgresqlのセットアップは完了です。

次にデフォルトユーザ名であるpostgresのパスワードを変更します。
ユーザをpostgresに切り替えて、

psql

を実行!!
その後、

alter role postgres with password 'pwd123'; ←pwd123にはパスワードを入力.

を実行。

そして、外部アクセスできるか下記で確認。

psql -U ユーザ名 -d データベース名 -h ホスト名

ログインができればセットアップは問題なく行えています。


monodevelopでのsqlアクセス

まず、monodevelop上でパッケージをインストールします。
こちらのパッケージを押下するとパッケージ追加画面が表示されるので、
f:id:Elsammit:20200911222934j:plain

検索窓で"Npgsql"を入力。
一番トップにNpgsqlが表示されるかと思うので、パッケージを追加を押下。
f:id:Elsammit:20200911223050j:plain

次にこちらを参考にボタンとクリックイベントをセットして、、、
elsammit-beginnerblg.hatenablog.com

クリックイベント内で下記の通り実装します。

void Button_Clicked(object sender, EventArgs e)
{
   string conn_str = "Server=192.168.56.101;Port=5432;User ID=postgres;Database=testdb;Password=postgres";
    using(NpgsqlConnection conn = new NpgsqlConnection(conn_str))
    {
        try
        {
            conn.Open();

            string cmd_str = "insert into testTbl values('1','AAA')";
            var cmd = new NpgsqlCommand(cmd_str, conn);
            cmd.ExecuteNonQuery();

            conn.Close();
        }
        catch
        {
            Console.WriteLine("error");
        }
    }
}

ServerにはIPアドレス、Portにはポート番号(postgresqlのデフォルトは5432)、IDはユーザ名、Databaseにはデータベース名、
PasswordにはIDで設定したユーザ名のパスワードを入力します。


。。。C#でのpostgresqlにアクセスするコードと同じですねw

■最後に

sqliteですとサーバ上にsqlを起動した状態にはできないですが、その分サイズが小さく軽いのが利点となります。
用いるsqlによってはアプリから直接sql文でDBにアクセスできるため、使い分けるとよさそうですね。