【UiPath】データベースを操作する方法

# はじめに

- 本記事では、UiPath でデータベースを操作する方法を紹介します。
- 操作説明は Microsoft Access のデータベースをもちいておこないます。
- 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
- 製品仕様や参考画像は 23.10 バージョンのもので構成しています。

# Microsoft Access のDB操作

Microsoft Access を起動し、新しいデータベースを作成します。

![ACCESS1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/54ab2542-8d99-dd42-dbcd-fdbd89f011c5.jpeg)

テスト用にサンプルレコードを3本登録します。

![ACCESS2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/b698e923-f34d-89ed-765a-4fa4110e3506.jpeg)

作成したデータベース（Database1.accdb）をプロジェクトフォルダに配置します。（※）

![ACCESS3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/347110b0-c6cc-6a83-235f-a4e2f5bf40b8.jpeg)

::: note
※：任意のパスに配置したDBを参照する場合、接続文字列のプロパティの赤線部分を引数としてください。
![ACCESS11.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/92494a16-32d3-2443-8c3e-bece1a4a3840.jpeg)
:::

データベースを操作するために「UiPath.Database.Activities」をインストールします。

![ACCESS4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/03aa311d-c327-16fe-5e23-ad3cc7f1b0c3.jpeg)

インストールすると、クエリを実行をはじめ、DB接続やトランザクション開始、一括更新といったアクティビティが利用可能となります。

![ACCESS5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/8a7eb5ca-ecae-43db-36b5-9324bd123323.jpeg)

「クエリを実行」アクティビティを配置し、「接続を構成」ボタンを押下します。

![ACCESS6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/be12a520-e0a3-dbc2-268d-c2253d3b5250.jpeg)

「接続設定を編集」＞「接続ウィザード」ボタンを押下します。

![ACCESS7.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/b424fa0d-7d18-0bbc-36ae-a8b532739921.jpeg)

Access を操作するため、データソースに「Microsoft Access Database File」を選択します。

![ACCESS8.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/470f9c85-4beb-fb83-ba49-2b0140c8e401.jpeg)

操作対象のデータベースを選択し、「OK」ボタンを押下します。

![ACCESS9.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/179f27a0-d38f-d737-f53e-020c42e8991a.jpeg)

上記の操作にて、接続設定の値は自動補完されます。
あとはSQLクエリをエディターで編集し、出力プロパティを設定すれば実行可能となります。

![ACCESS12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/202666bf-45fd-9067-ab7c-79e69084075b.jpeg)

実行結果のデータテーブルからサンプル登録した3レコードの出力を確認できます。

![ACCESS10.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/94eb288b-b729-719a-7330-36927eb02662.jpeg)

***「クエリを実行」は戻り値をデータテーブルで受けるつくりになってるので、SELECT句の実行に使いましょう。（たとえば、UPDATE文を「クエリを実行」で投げても、レコードは更新されるものの、出力されるデータテーブルにレコードはありません。）***

***UPDATE,INSERT,DELETEなどのコマンドは「コマンドを実行」アクティビティを使いましょう。***

「コマンドを実行」アクティビティでは更新のあったレコード数が返却されます。

![ACCESS14.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/357fea42-cd5c-4ebf-9c92-944b842ff2e7.jpeg)

該当レコードがない場合は「0」が返却されます。

![ACCESS13.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/d4d4be61-fb94-fa03-ca3c-d47916872bd6.jpeg)

次に、トランザクション操作について

「データベースに接続」アクティビティでDBコネクションをつくります。

![ACCESS19.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/40eb0714-3ab7-07f0-4c51-adc6a0904675.jpeg)
![ACCESS18.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/7fb2b06c-40fa-33fe-925e-d4486b13cf2b.jpeg)

「トランザクションを開始」アクティビティを配置し、既存の接続に作成済みのコネクションを設定します。
（「トランザクションを使用」のチェックがONになっていることも要確認）

![ACCESS16.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/fc4b8d95-ad26-afa8-fda9-d2fdcedb1964.jpeg)

「コマンドを実行」アクティビティ側も既存の接続に作成済みのコネクションを設定します。

::: note warn
「既存の接続」に値を指定する場合、「プロバイダー名」と「接続文字列」は入力不要です。
入力があるとコネクションが複数存在するためエラーとなります。
![ACCESS20.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/30912a84-ae50-311d-c0f5-da15c449141f.jpeg)
:::

![ACCESS17.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/4a649a05-5638-d6b9-289d-44e4eddab459.jpeg)

正しく設定ができていれば、次の様に、***スコープ内では更新が確定せず、スコープを抜けたタイミングでコミットされる挙動を確認できます。***

![ACCESS15.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/d0ad54e2-6940-7bf9-bd9d-d7602f0a1b38.jpeg)

最後に「挿入」アクティビティの利用方法を紹介します。

挿入用のレコードを「データ テーブルを構築」アクティビティで用意します。

![ACCESS21.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/bd1915cd-8e6e-f044-1bc5-afd44e89d323.jpeg)

「挿入」アクティビティは、挿入先の「テーブル名称」と挿入レコードを含むデータテーブルを指定するだけで使えます。

![ACCESS22.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/119e0aeb-443f-70cd-e683-dbf97dcd73be.jpeg)

::: note
手元の動作を見る限り、複数レコードの一括挿入も「挿入」アクティビティで可能です。
![ACCESS23.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/b7b1f74d-3e46-3dc1-5104-d38bb6a58bdf.jpeg)
:::

# その他のDB操作

■SQL Server 接続の参考記事

https://www.cdata.com/jp/kb/tech/sql-odbc-uipath.rst

■Oracle 接続の参考記事

https://www.cdata.com/kb/tech/oracledb-odbc-uipath.rst

■SQLite のカスタムアクティビティ

https://marketplace.uipath.com/ja/listings/sqlite-database-for-uipath

# まとめ

いかがでしたでしょうか。
ロボットは大量トランザクションの作成を得意とします。
これらのデータベースアクティビティと組み合わせれば個人でも有用なDBを簡単につくれそうですね。
WEB上にしかないリリースノートとかサクッと手元のDBに入れて
「バージョン」×「製品」×「仕様変更」とか調べられると便利だろうなーと妄想。
最後までお読みいただきありがとうございますm(_ _)m