Coffeescript-sqlite

提供:Dev Guides
移動先:案内検索

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