SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MonoでDBMS用データプロバイダを使う

MonoでSQLiteを使ってみたよ!(DBアクセス-コマンド編)

MonoでSQLiteを使う(前篇)

  • このエントリーをはてなブックマークに追加

Monoに注目していくつか動作確認を行いました。今記事ではMonoとSQLiteを使用し、コマンドオブジェクトを使った基本的なDBアクセスについて解説を行います。

  • このエントリーをはてなブックマークに追加

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、SQLite共にopenSUSEのソフトウェア管理(YaST2)から導入できますが、標準の状態では、Monoであればバージョンは1.2.5、SQLiteは3.4.1と、今回使用した環境とは違ったものになります(2008.7.16現在)。
 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ファイルの作成を行います。

 ちょうどいいチュートリアルとして、MSDNライブラリ「Transact-SQLステートメントの作成チュートリアル」内のレッスン 1: データベース オブジェクトの作成を参考にしました。
 もちろん、こちらはSQL Server 2005用のチュートリアルなので完全に同じことはできませんが、ストアドプロシージャを除く、ほぼ同様のことが可能です。
 

 手順は、

  • テーブル作成用SQLファイルの準備
  • sqlite3コマンドによるSQLファイルの実行

 になります。

テーブル作成用SQLファイルの準備

 以下のテーブル作成用SQLファイルを用意します。

Products.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が作成され、同ファイル内に以下のテーブルが作成されます。

Productsテーブル
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  

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
5.DBアクセス-コマンド編

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
MonoでDBMS用データプロバイダを使う連載記事一覧

もっと読む

この記事の著者

sta(エステーエー)

風来坊blog:sta.blockhead

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2823 2008/08/26 14:12

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング