C言語でSQLite,テーブルを削除する

スポンサーリンク

鍛錬 231

C言語でSQLite,テーブルを削除する

C言語で SQLite3 を操作して、テーブルを削除する方法についてです。

プログラム

以下は、テーブルを削除するプログラム drop_table.c です。

今回は、データベースファイル /var/tmp/fruits.db のテーブル fruits を削除しています。

// include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>

// main
int main(void)
{
	char db_name[256] = "";
	char sql_str[256] = "";
	char *errmsg = '\0';
	int ret;
	
	sqlite3 *db = NULL;
	
	strncpy(db_name, "/var/tmp/fruits.db", sizeof(db_name) - 1);
	
	// オープン
	ret = sqlite3_open(db_name, &db);
	if (ret != SQLITE_OK) {
		printf("ERROR,sqlite3_open(),%s\n", sqlite3_errmsg(db));
		
		exit(EXIT_FAILURE);
	}
	
	// SQLステートメントを作成
	strncpy(sql_str,
			"drop table fruits",
			sizeof(sql_str) - 1
			);
	
	// SQLステートメントを実行
	ret = sqlite3_exec(db, sql_str, NULL, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("ERROR,sqlite3_exec(),%s\n", errmsg);
		
		// クローズ
		sqlite3_close(db);
		
		// エラーメッセージのメモリ領域を解放
		sqlite3_free(errmsg);
		
		exit(EXIT_FAILURE);
	}
	
	// クローズ
	ret = sqlite3_close(db);
	if (ret != SQLITE_OK) {
		printf("ERROR,sqlite3_close(),%s\n", sqlite3_errmsg(db));
		
		exit(EXIT_FAILURE);
	}
	
	printf("SUCCESS,drop table\n");
	
	return 0;
}

実行結果

以下は、次の順序で実行してテーブルが削除されたことを確認しています。

  1. sqlite3 のプロンプトでスキーマを確認。 (この時点では、テーブルが存在する)
  2. drop_table.c をコンパイル後に実行して、テーブルを削除。
  3. sqlite3 のプロンプトでスキーマを確認。 (この時点で、テーブルは削除されている)
***@ubuntu:~/***/test/sqlite3$ 
***@ubuntu:~/***/test/sqlite3$ sqlite3 /var/tmp/fruits.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> 
sqlite> 
sqlite> .schema
CREATE TABLE fruits(id integer, fruits_name text, price integer);
sqlite> 
sqlite> 
sqlite> .quit
***@ubuntu:~/***/test/sqlite3$ gcc -Wall -Wextra drop_table.c -o drop_table -lsqlite3 -L/usr/lib/x86_64-linux-gnu -I/usr/include
***@ubuntu:~/***/test/sqlite3$ ./drop_table
SUCCESS,drop table
***@ubuntu:~/***/test/sqlite3$ sqlite3 /var/tmp/fruits.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> 
sqlite> 
sqlite> .schema
sqlite> 
sqlite>

 
上記に示した通り、テーブル fruits が削除されました。

タイトルとURLをコピーしました