Coffeescript-sqlite
CoffeeScript-SQLite
SQLiteは、軽量のスキーマベースのリレーショナルデータベースエンジンです。 Webブラウザーのローカルストレージ用の組み込みデータベースソフトウェアとして人気があります。
他の多くのデータベース管理システムとは異なり、SQLiteはクライアントサーバーデータベースエンジンではありません。 詳細については、リンクを参照してください:/sqlite/sqlite_overview%20 [SQLiteチュートリアル]
この章では、CoffeeScriptを使用してSQLiteデータベースと通信する方法を学習します。
インストール
SQLite3データベースは、 node-sqlite3 モジュールを使用してCoffeeScriptと統合できます。 このモジュールは、Node.js v0.10.x、v0.12.x、v4.x、およびv5.xで動作します。 このモジュールは、CoffeeScriptを使用してSQLite3と通信するためのさまざまな機能を提供します。これに加えて、簡単なクエリとパラメーターバインディングインターフェイス、およびクエリシリアル化APIも提供します。
以下に示すように、npmを使用してnode-sqlite3モジュールをインストールできます。
npm install sqlite3
sqlite3モジュールを使用するには、まずデータベースを表す接続オブジェクトを作成する必要があります。このオブジェクトは、すべてのSQLステートメントの実行に役立ちます。
データベースへの接続
まずSQLiteデータベースに接続するには、 node-sqlite3 モジュールの* require()関数を呼び出してパッケージを作成し、パラメーターとして文字列 *sqlite3 を渡します。 次に、データベースの名前を* sqlite3.Database()*コンストラクトに渡して、データベースに接続します。
次のCoffeeScriptコードは、既存のデータベースに接続する方法を示しています。 データベースが存在しない場合は、指定された名前 test.db で作成され、開かれ、最後にデータベースオブジェクトが返されます。
#Creating sqlite3 package
sqlite3 = require('sqlite3')
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Database opened successfully."
test.dbの代わりに、匿名のメモリ内データベースを作成する*:memory:と、匿名のディスクベースのデータベースを作成する空の文字列を指定することもできます。 上記のコードを *create_db.coffee という名前のファイルに保存し、以下に示すように実行します。 データベースが正常に作成された場合、次のメッセージが生成されます-
c:\> coffee create_db.coffee
Successfully connected
テーブルを作成する
- run()*関数を使用して、CoffeeScriptでSQLiteデータベースにテーブルを作成できます。 クエリを渡して、文字列形式でこの関数にテーブルを作成します。
次のCoffeeScriptプログラムは、以前の test.db データベースにテーブルを作成するために使用されます-
#Creating sqlite3 package
sqlite3 = require('sqlite3')
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"
db.serialize ->
db.run 'CREATE TABLE STUDENT (name TEXT, age INTEGER, city TEXT)'
console.log "Table created successfully"
return
db.close()
- serialize()関数は、データベースをシリアル化モードに設定します。 このモードでは、コールバックが発生するとすぐに呼び出されます。 そのコールバックのクエリはシリアルで実行されます。 すぐに関数が戻ります。データベースは再び通常モードに設定されます。 トランザクションが完了したら、 close()*関数を使用して接続を閉じる必要があります。
上記のコードを create_table.coffee という名前のファイルに保存し、次のように実行します。 これにより、データベース_test.db_に STUDENT という名前のテーブルが作成され、次のメッセージが表示されます。
C:\> coffee create_table.coffee
Successfully connected
Table created successfully
データの挿入/作成
insertステートメントを実行することにより、CoffeeScriptコードを介してSQLiteデータベースにデータを挿入できます。 そのためには、SQLステートメントを準備する* prepare()*関数を使用できます。
また、バインド変数(?)を使用したクエリも受け入れます。これらの変数の値は、* run()関数を使用して添付できます。 準備済みステートメントを使用して複数のレコードを挿入できます。すべてのレコードを挿入した後、 finalize()*関数を使用して準備済みステートメントをファイナライズする必要があります。
次のCoffeeScriptプログラムは、前の例で作成されたSTUDENTという名前のテーブルにレコードを挿入する方法を示しています。
#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"
db.serialize ->
stmt = db.prepare('INSERT INTO STUDENT VALUES (?,?,?)')
stmt.run 'Ram',24,'Hyderabad'
stmt.run 'Robert',25,'Mumbai'
stmt.run 'Rahim',26,'Bangalore'
stmt.finalize()
console.log "Data inserted successfully"
return
db.close()
上記のコードを insert_data.coffee という名前のファイルに保存し、次のように実行します。 これにより、次のメッセージを表示するSTUDENTという名前のテーブルが作成されます。
C:\> coffee insert_data.coffee
Successfully connected
Data inserted successfully
データの読み取り/取得
- each()*関数を使用して、SQLiteテーブルからデータを取得できます。 この関数は、各行で呼び出されるオプションのコールバック関数を受け入れます。
次のCoffeeScriptプログラムは、前の例で作成したSTUDENTという名前のテーブルからレコードを取得して表示する方法を示しています
#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"
db.serialize ->
console.log "The contents of the table STUDENT are ::"
db.each 'SELECT rowid AS id, name,age,city FROM STUDENT', (err, row) ->
console.log row.id + ': ' +row.name+', '+ row.age+', '+ row.city
return
return
db.close()
上記のコードを retrive_data.coffee という名前のファイルに保存し、次のように実行します。 これにより、STUDENTという名前のテーブル内のすべてのレコードが取得され、次のようにコンソールに表示されます。
C:\> coffee retrive_data.coffee
Successfully connected
The contents of the table STUDENT are ::
1: Ram, 24, Hyderabad
2: Robert, 25, Mumbai
3: Rahim, 26, Bangalore
データの更新
次のCoffeeScriptコードは、UPDATEステートメントを使用してレコードを更新し、更新されたレコードをフェッチしてSTUDENTという名前のテーブルに表示する方法を示しています
#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"
db.serialize ->
#Updating data
stmt = db.prepare('UPDATE STUDENT SET city = ? where name = ?')
stmt.run 'Delhi','Ram'
console.log "Table updated"
stmt.finalize()
#Retrieving data after update operation
console.log "The contents of the table STUDENT after update operation are ::"
db.each 'SELECT rowid AS id, name, city FROM STUDENT', (err, row) ->
console.log row.id + ': ' +row.name+', '+ row.city
return
return
db.close()
上記のコードを update_data.coffee という名前のファイルに保存し、次のように実行します。 これにより、Ramという名前の学生の都市が更新され、更新操作後に次のようにテーブル内のすべてのレコードが表示されます。
C:\> coffee update_data.coffee
Successfully connected
Table updated
The contents of the table STUDENT after update operation are ::
1: Ram, Delhi
2: Robert, Mumbai
3: Rahim, Bangalore
データを削除する
次のCoffeeScriptコードは、DELETEステートメントを使用してレコードを削除し、残りのレコードをSTUDENTという名前のテーブルから取得して表示する方法を示しています。
#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()
#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"
db.serialize ->
#Deleting data
stmt = db.prepare('DELETE FROM STUDENT WHERE name = ?')
stmt.run 'Ram'
console.log "Record deleted"
stmt.finalize()
#Retrieving data after delete operation
console.log "The contents of the table STUDENT after delete operation are ::"
db.each 'SELECT rowid AS id, name, city FROM STUDENT', (err, row) ->
console.log row.id + ': ' +row.name+', '+ row.city
return
return
db.close()
上記のコードを delete_data.coffee という名前のファイルに保存し、次のように実行します。 Ramという学生のレコードを削除し、次のように削除操作後にテーブルに残っているすべてを表示します。
Successfully connected
Record deleted
The contents of the table STUDENT after delete operation are ::
2: Robert, Mumbai
3: Rahim, Bangalore