闇の精霊の感応(仮)開発日誌 #4 (2018/03/24)

現在、引き続きボス沸き時間計算タイマーを実装中です。
前回の記事で「計算されたボス沸き時間はどこか外部へ保存してBOT起動時にそれを読み込むことをしないとBOTクラッシュ時にデータが初期化される」
という問題を思いついたので、別途計算された時間を外部データベースへ保存&読み込みする機能を追加してみました。
使用DBはMariaDBでMySQL Connector/NETを使いました。

事前にSQL文を書いたstringの変数を用意します。
DBへのログインのSQL文の文法がググったサイトごとにバラバラでかなり悩みましたが、
最終的に「Database=[DB名];Data Source=[DBアドレス];User Id=[ユーザー名];Password=[パスワード]」で接続できました。

次にDBへボス沸き時刻データを書き込む関数と読み込む関数を作ります。
書き込み関数は「SaveWindowTimes(int BossID)」、読み込み関数は「LoadWindowTimes()」です。
まず、読み込み関数は適当に変数を作ってそこへMySqlConnectionインスタンスを作り、DBへのログインのためのSQL文を添えます。
そしてその変数からOpen()を呼び出して接続を開始、
その後、MySqlCommandインスタンスで出来たListに各ボスの沸き時刻をDBから読み込むSQL文を添えて、
ExecureReader()関数を呼び出してデータを読み出すためのMySqlDataReaderインスタンスを生成、GetDateTime()で指定された沸き時刻のデータを取り出します。

書き込み変数は同じようにDBにログインして、
指定したボスの情報のみ更新するUPDATEのSQL文をExecuteNonQuery()で実行して書き込みます。

これらの関数を用意した後デバッグ目的でコンソールからこれらの関数を呼び出せるようにして実行してみました。

うまくいきました。
あとはこれらを実際のボス沸き時処理などに呼び出せば完成です。

 

PS:
そこそこの企業様へ(大した職ではないですが)内定しました。4月から勤務することになるので開発ペースが下がると予想されます。
ので、C#/Discord.Net/GitHubなどの知識があってお手伝いに興味がある方はご連絡ください。