Visual Studio CodeでSQLite3のCRUDをしてみる
Page 1でVisual Studio Code上でSQLite3を使う方法は理解できたと思います。Page 2では、この連載で使うデータベースを作ってみたいと思います。データベースの使い方は知っている人は多いと思いますが、この連載で使うデータも作るので、必ずこのページのサンプルコードを実行してください。
データベースの基本は「CRUD」です。「Create(作成)」「Read(読み出し)」「Update(更新)」「Delete(削除)」の頭文字をとった略語です。これらについてこのページではサンプルコードを例示します。

データを保存するファイルを作成する
現在のフォルダに右クリックメニューの「New File」メニューで「bezierbbs.db」拡張子の空のファイルを作成します。Page 1とはファイル名を変更しています。このページで実行するサンプルコードでこのファイルにデータを作成します。
テーブルを作成する
「Query Editor」で次のサンプルコードをコーディングして実行(▷)しテーブルを作成します。「id」カラムは1から順に繰り上げてユニークな(一意の)値で、「title」カラムはタイトルで、「speaker」カラムは発言者で、「date」カラムは日時で、「sentence」カラムは書き込む文章で、「xy」カラムはベジェ曲線のデータです。「article_id」カラムはarticleテーブルのidカラムの値を入れます。
CREATE TABLE IF NOT EXISTS article (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,speaker TEXT,date TEXT,sentence TEXT,xy TEXT);
サンプルコードの解説
「article」テーブルがなければ(IF NOT EXISTS)、articleテーブルを作成します。整数(INTEGER)の主キー(PRIMARY KEY)の自動インクリメント(AUTOINCREMENT)の「id」カラムを、テキスト(TEXT)の「title」カラムを、テキストの「speaker」カラムを、テキストの「date」カラムを、テキストの「sentence」カラムを、テキストの「xy」カラムを作成します。
CREATE TABLE IF NOT EXISTS comment (id INTEGER PRIMARY KEY AUTOINCREMENT,article_id INTEGER,speaker TEXT,date TEXT,sentence TEXT);
サンプルコードの解説
「comment」テーブルがなければ(IF NOT EXISTS)、commentテーブルを作成します。整数(INTEGER)の主キー(PRIMARY KEY)の自動インクリメント(AUTOINCREMENT)の「id」カラムを、整数の「article_id」カラムを、テキストの「speaker」カラムを、テキストの「date」カラムを、テキストの「sentence」カラムを作成します。
レコードを挿入する
実際に使うデータであるレコードを1行だけテーブルに挿入します。SQL文は「INSERT INTO テーブル名(カラム1,カラム2) VALUES(値1,値2);」と書きます。「datetime」関数はSQLite3に最初から用意されている日時を取得する関数です。idカラムは指定していませんが自動インクリメントなので勝手に1~の値が入ります。
INSERT INTO article(title,speaker,date,sentence,xy) VALUES ('一筆書きの「お絵描き掲示板」','たけし',datetime('now', 'localtime'),'誰でも一筆書きできます。','400,200,400,200,200,500,200,500,600,500,600,500,400,200,400,200');
サンプルコードの解説
articleテーブルのidカラムには1~のユニークな値が、titleカラムとspeakerカラムとdateカラムとsentenceカラムとxyカラムにそれぞれ「VALUES」の値を挿入します。
INSERT INTO comment(article_id,speaker,date,sentence) VALUES (1,'匿名',datetime('now', 'localtime'),'誰でもアニメーションするワイヤーフレーム(針金の3Dオブジェクト)をWebブラウザ上でデザインすることができて、この「3Dお絵描き掲示板」で世界中の人に公開でき、コメントを書いたり書いてもらったりして交流することができます!');
サンプルコードの解説
commentテーブルのidカラムには1~のユニークな値が、article_idカラムとtitleカラムとspeakerカラムとdateカラムとsentenceカラムにそれぞれ「VALUES」の値を挿入します。
レコードを取得する
レコードのカラムの値を取得するには、SQL文「SELECT カラム1,カラム2 FROM テーブル名;」を使います。
SELECT * FROM article;
サンプルコードの解説
articleテーブルから全てのカラム(*)の値を取得します。
SELECT date FROM comment;
サンプルコードの解説
commentテーブルからdateカラムの値を取得します。
レコードを更新する
レコードのカラムの値を更新するには、SQL文「UPDATE テーブル名 SET カラム1 = 値1,カラム2 = 値2 WHERE カラム3 = 値3;」を使います。
UPDATE article SET title = '一筆書き',speaker = 'おおにし' WHERE id = 1;
サンプルコードの解説
articleテーブルのidカラムが1のところ(WHERE)のtitleカラムを'一筆書き'に、speakerカラムを'おおにし'に更新します。
UPDATE comment SET speaker = 'たけし',sentence = '更新した' WHERE id = 1;
サンプルコードの解説
commentテーブルのidカラムが1のところのspeakerカラムを'たけし'にsentenceカラムを'更新した'に更新します。
レコードを削除する
次の削除コードは参考までに紹介しているだけで、実行しなくていいです。もし実行した場合は、もう一度INSERT INTOでレコードをいくつか追加してください。そうしないと次回以降でレコードが無くては困ります。レコードを削除するにはSQL文「DELETE FROM テーブル名 WHERE カラム名 = 値;」を使います。
DELETE FROM article WHERE id=1
サンプルコードの解説
articleテーブルのidカラムが1のところ(WHERE)のレコードを削除します。
DELETE FROM comment WHERE id=1
サンプルコードの解説
commentテーブルのidカラムが1のところのレコードを削除します。