なべひろBlog

プログラミングをメインに仕事に関するアレコレを発信しています。

C#

C#でNpgsqlを使ってPostgreSQLへアクセス【Transaction】

トランザクションはあまり多くの説明は必要としないかと思われますのでサクッとやってしまいます。 どちらかと言えばロールバックが発生した後の処理をどうするかが悩ましい所かもしれません。 私の作成するサンプルソースファイルは 今回のサンプルソースは…

C# 小技集

C#

検索すれば出てきますが探すのも面倒な時の自分用備忘録な記事です。 全てMVVMなWPFを用いて自分で動作確認をやった内容です。 もくじ 例外が発生した場所を特定する マウスカーソルの状態を変える 例外が発生した場所を特定する 例外をキャッチした場所で c…

C#でNpgsqlを使ってPostgreSQLへアクセス【SELECT】

もくじ はじめに 基本的なSELECT データベーステーブルのn番目のカラムデータを取得 SELECTのn番目のカラムデータを取得 NpgsqlCommand.FieldCountでカラム数を参照 DbDataReader.GetValueで取得 型を明確にして取得 時刻データを取得してみる 浮動小数点 配…

C#でNpgsqlを使ってPostgreSQLへアクセス【INSERT】

はじめに まずはデーテベーステーブルにデータを入れなければ話は始まりません。 と言う事で3つのINSERT手法を解説したいと思います。 尚、以下のサンプルコードを基に記述したのにビルドエラーが出る場合は「using System.Data;」が抜けている可能性があり…

C#でNpgsqlを使ってPostgreSQLへアクセス【RANGEパーティションのあるテーブル作成】

はじめに 今回は範囲を指定したパーティションテーブルの作成を行います。 範囲といえば蓄積した値ごとや年ごとの値に振り分けるなどがあります。 年ごとに関しては別の手法も併せて紹介したいと思います。 Npgsqlの本家情報は 私の作成するサンプルソースフ…

C#でNpgsqlを使ってPostgreSQLへアクセス【LISTパーティションのあるテーブル作成】

はじめに データベースに慣れている方なら特に問題はないと思いますが、ついでにPostgreSQLのバージョン10から使えるようになった宣言的パーティションの手法も含め解説したいと思います。 宣言的パーティションとは1つのテーブルを条件に則った形で分割する…

C#でNpgsqlを使ってPostgreSQLへアクセス【テーブル作成の基礎】

はじめに 接続ができたら次はデータベーステーブルを作成してみます。 バージョン10から使えるようになった宣言的パーティションを含めて解説しようかと思いましたが思いほのか文字数が多くなり分かりにくくなる可能性もあるのでまずは基礎的な手法の説明を…

C#でNpgsqlを使ってPostgreSQLへアクセス【接続する】

はじめに 2020年初めにEntityFrameworkを使ったPostgreSQLへアクセスする記事を書きましたが、その後も幾つかEntityFrameworkを用いたアプリを作る中で不満点も出てしまい、昔のようにクエリを直に書いたほうが自分的には分かりやすくクエリのテクニックもC#…

C#で負荷をかけず取りこぼす事なくログを出力する

C#

不具合が起きた時、不具合の原因を特定する情報として活用できるのがログです。 但しファイルアクセスはプログラム側からしてみればとても遅い処理なので、あまり影響されたくありません。 エラーによっては大量のログが出力されるかもしれません。 プログラ…

C# switch式の使い方

C#

Ver8から導入されたswitch式ですが、少し前まで存在が分かりませんでした。 使ってみたらとても便利に思いましたので、どんな手法で使えるか、幾つか試してみます。 単純なswitch式 単純に評価値を基に結果を出力します。 私の場合過去の事例を見ると、この…

C#でSystem.Net.SocketsのxxxAsyncを使ったTCPクライアントを作ってみる

前回はxxxAsyncを用いたTCPサーバを作ってみましたがTCPクライアントを作ってみます。 以前作ったTCPクライアントはこちらになりますが、これよりはコード数が少なくなります。 但し、前記事のTCPサーバを作った時と同じような注意点と、TCPサーバとは違う注…

C#でSystem.Net.SocketsのxxxAsyncを使ったTCPサーバを作ってみる

以前C#の非同期TCPサーバのサンプルを作った時はBeginxxxメソッドを使用したサンプルコードを作成しましたが、今回はxxxAsyncを使ったTCPサーバを作成してみます。 前回は きっかけは調べ物をしていた時に偶然にxxxAsyncメソッドを見つけ、何が違うのか調べ…

WPFアプリケーションを自動更新してみる

C#

はじめに 社内配布のアプリケーションで煩わしいのが更新後の配布です。 全ての人がパソコンに精通しているとは限りませんので、安全を考えるとパソコンを知っている人に依頼する事になります。 結局は誰かが煩わしい思いをするので、それなら特定のフォルダ…

PrismのUserControlを動的に配置する

はじめに かなり前にWinFormsでカスタムコントロールを動的に生成し任意の場所に配置するアプリを作りました。 目的は部屋にある機械の状態監視です。 設置された機械と同じレイアウトの画面なら作業者はどの機械かの判断が簡単にできます。 機械は増えたり…

Prismで複数のページを持ったアプリを作ってみる

はしめに 私が作るアプリケーションはメイン画面と設定画面など複数の画面で構成されるのがほとんどです。 以前記事にしたIDialogServiceを使って設定ダイアログを出してもいいですが、手段は複数持っておき状況に合わせて使い分けしたいと思い、WinFormsで…

C# 2行で工程能力のCp、Cpk計算

C#

はじめに 私の会社は機械部品の製造がメインです。 非常に精密な部品であるため製品の品質を管理し不良品を作らないのは大事な事です。 私は工程管理のプロではありませんが、製造部の管理者より製品寸法に関する情報を表示し品質を管理したい要望は多いです…

C#で今時な書き方の非同期なTCPクライアントを作ってみる

前回からだいぶ時間が経ってしまいましたが、クライアント側の今時な(C# Ver8)書き方を紹介します。 尚、サーバと比較すると名称に一貫性がないかもしれませんがご了承ください。 基となるマイクロソフトのコードは ソースはこちらになります。 尚、今回は…

C#で今時な書き方の非同期なTCPサーバを作ってみる 詳細編

もくじ Server ~Server message logWrite Open accept acceptCallback receptionCallback transmissionCallback Close StateObject 前回紹介したTCPサーバのメソッドを少しだけ細かく紹介したいと思います。 まあ、紹介したところで触る部分は少ないのであま…

C#で今時な書き方の非同期なTCPサーバを作ってみる 概要編

もくじ 準備 ReactiveProperty.WPF System.Text.Encoding.CodePages System.ServiceModel.Primitives 主なメソッド Server ~Server message Open accept acceptCallback readCallback writeCallback Close StateObject C#を用いたTCPサーバのサンプルソース…

WPFでボタンが押された時の処理が終わるまで簡単にボタンを押せないようにする

存在は知ってましたが他に優先順位の高い案件が多かったので後回しになってました。 結果から言えばもっと早くやるべきでしたね(汗 簡単に言えばボタンを押して処理が終わるまでボタンを押せないようにするのが楽にできます。 私のような装置系は特にボタン…

Prism使ったWPFでLivetCask.Messagingを使ってみる

ViewModelから使用者にメッセージを出したい時ってのは結構あります。 普通にMessageBox.Showの記述をすればメッセージは表示されますし、何か支障があるか?と言われれば何もありません。 ViewModelでViewを操作するなんて云々と巷では言われており、確かに…

Prismを使ったWPFアプリケーションで多重起動を抑制する

多重起動が問題になるケースはごくまれですが、利用者が気づかず複数開いたウィンドウで「ソフトを終了したのに起動している!」といったプチパニックを起こさないためにも多重起動は対処した方がいいと思います。 多重起動が不具合だと勘違いされ呼ばれる方…

MVVMなWPFアプリでDataGridの行と列情報を取得してみる

コレ、検索してもなかなか良い感じの情報にヒットしないんですよね。 てな事で検索情報とプロパティを眺めながら試してみました。 データがBindingされていればセル内の編集された値は反映できるので行とか列の情報なんてあまり必要としません。 今回行と列…

WPFアプリのImageにファイルを掴ませないようにする

前回MVVMなWPFアプリでImageにドラッグ&ドロップをやる手段を書きましたが、あの方法には困った問題が1つあります。 それは表示していた(している)ファイルをアプリケーションが掴んでいるのでファイルの削除ができません。 表示されてなければそのうち離し…

MVVMなWPFアプリケーションでドラッグ&ドロップをしてみる

まあ、検索すれば幾つかヒットするネタではありますが、ドンピシャでヒットしなかったので検証してみます。 構成は.NET Core3.1なWPFアプリでPrismとReactivePropertyを使っています。 やっている事はImageにドラッグ&ドロップされたJPGファイルを表示するだ…

.NET Core 3.1で作ったWPFアプリでPostgreSQLへEntityFrameworkを使ってアクセスしてみる

WinFormsではEntityFramwworkを使ってPostgreSQLへアクセスした実績はありますが、WPFましてや.NET Coreでは初めてなのできちんと動作できるか検証してみます。 まずはNuGetで「Npgsql.EntityFrameworkCore.PostgreSQL」をインストールします。 あと、何かと…

C#でアプリの設定値を管理する

C#

アプリ運用で設定値の運用は大事な項目です。 WinFormsでは(WPFでは見た事がないだけ)プロパティに「設定」があり、それに項目を追加して運用できます。 しかし、これは運用面においてはイマイチです。それは 1.決まった型の変数しか設定できない。 2.アプリ…

C#で数値入力の補助をしてみる

C#

C#で数値「だけ」を入力させるコードは世の中にたくさんあります。 ベタな手法でWinFormsだとKeyPressイベントで数値か否かをチェックしてイベントをキャンセル状態にしますね。 必要に応じて符号などもOKな条件を追記すれば符号あり、小数点ありの数値入力…

.NET Core 3.1アプリが起動できない

最近ようやくWPFで作った.NET Coreアプリをデバッグし始めました。 自分のPCでは問題なく動作してたので新しいPCにコピーして起動したら .NET Coreをインストールしなきゃダメってなメッセージが出て起動しません。 あれ?.NET Coreって.NET Frameworkみたい…

.NET Frameworkから.NET Core 3xに移行したら出た例外 StreamWriter編

最近やっと.NETCore 3.1のアプリをデバッグし始めました。 しかし、いきなり実績のあった処理で例外が出て戸惑ってしまいました。 これからも色々出ると思うので備忘録として残していきます。 今回の事象はStreamWriterでの例外です。 こんなプログラムを作…