1.はじめに
Monoはリリースされて久しいですが、基本的な情報が不足しているように感じました。また、あったとしても情報として少々古く、現時点でどの程度のことができるか知りたいと思い、いくつか動作確認を行いました。そんな中で使用した基本的なデータベース(以下DB)アクセスサンプルを紹介します。DBにはSQLiteを使いました。
Monoとは
MonoはNovell主導で開発が進められている、.NET Framework互換環境をLinuxなどで実現するためのオープンソースソフトウェア群です。
SQLiteとは
シンプル、軽量なDBMS(DB管理ソフト)です。今回、SQLiteで作成したDBとの接続にはMonoから提供されているSQLite用のデータプロバイダを使用しました。
2.対象読者
- Monoを試してみたい人
- SQLiteも試してみたい人
- ADO.NET初学者
3.必要な環境
以下の環境で動作確認を行いました。
- OS:openSUSE 10.3
- Mono 1.9.1(以下のパッケージを導入)
- mono-core 1.9.1
- mono-data 1.9.1
- mono-data-sqlite 1.9.1
- monodevelop 1.0
- monodevelop-database 1.0
- SQLite 3.5.9
Mono 1.9.1を導入する場合はこちらから入手します。openSUSE 10.3(i586)の場合、ソフトウェアリポジトリに「http://ftp.novell.com/pub/mono/download-stable/suse-103-i586」を追加することで、YaST2上から導入することが可能になります。
SQLite 3.5.9を導入する場合は、SQLiteのDOWNLOADから「sqlite-amalgamation-3.5.9.tar.gz」をダウンロードしてください。SQLiteをソフトウェア管理外から導入したのはMonoDevelopからデータ操作(クエリー実行)する上で問題が発生したためです。詳細については次回の記事で解説します。
4.準備編
SQLite DBの準備
動作確認用SQLite DBファイルの作成を行います。
もちろん、こちらはSQL Server 2005用のチュートリアルなので完全に同じことはできませんが、ストアドプロシージャを除く、ほぼ同様のことが可能です。
手順は、
- テーブル作成用SQLファイルの準備
- sqlite3コマンドによるSQLファイルの実行
になります。
テーブル作成用SQLファイルの準備
以下のテーブル作成用SQLファイルを用意します。
-- sqlite3 data/TestData.db < sql/Products.sql -- -- Products テーブル削除 drop table if exists Products; -- Products テーブル作成 create table Products( ProductID int not null primary key, ProductName text not null, Price numeric null, ProductDescription text null); -- INSERT 実行1 insert into Products (ProductID, ProductName, Price, ProductDescription) values (1, 'Clamp', 12.48, 'Workbench clamp'); -- INSERT 実行2 カラムの順番を変えたパターン insert into Products (ProductName, ProductID, Price, ProductDescription) values ('Screwdriver', 50, 3.17, 'Flat head'); -- INSERT 実行3 カラムリスト指定なし、入力値リストはカラム順パターン insert into Products values (75, 'Tire Bar', NULL, 'Tool for changing tires.'); -- INSERT 実行4 ProductDescription カラムの指定なしパターン insert into Products (ProductID, ProductName, Price) values (3000, '3mm Bracket', .52); -- UPDATE 実行 update Products set ProductName = 'Flat Head Screwdriver' where ProductID = 50; -- 確認用 SELECT 実行 select * from Products;
sqlite3コマンドによるSQLファイルの実行
sqlite3コマンドを使用した、sqlite3 DBファイルの作成を行います。sqlite3コマンドは SQLite version 3用のコマンドラインインターフェースになります。
DBファイル : ~/data/TestData.db SQLファイル : ~/sql/Products.sql
とした場合、コンソールから、
> cd > sqlite3 data/TestData.db < sql/Products.sql
を実行すると、~/data/TestData.dbが作成され、同ファイル内に以下のテーブルが作成されます。
ProductID | ProductName | Price | ProductDescription |
1 | Clamp | 12.48 | Workbench clamp |
50 | Flat Head Screwdriver | 3.17 | Flat head |
75 | Tire Bar | Tool for changing tires. | |
3000 | 3mm Bracket | 0.52 |