スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SQLiteのPHPとC言語での比較

クエリーでソース量の比較をしてみた

PHP
<?php

$db = new SQLite3('/home/user/sqlite-c/stations.sqlitedb', SQLITE3_OPEN_READONLY);

$sql = "SELECT station FROM station_info";

$rows = $db->query($sql);
if (!$rows) {
        $db->close();
        die('クエリーが失敗しました。');
}

//結果を1行ずつ処理する
while ($row = $rows->fetchArray(SQLITE3_ASSOC)) { 
        print('station='.$row['station']."\n");
}
//終了
$db->close();
?>

C言語で記述すると
#include <sqlite3.h>
#include <stdio.h>

int main(void) {
        int rc;
        char *sql;
        sqlite3 *db;
        sqlite3_stmt *stmt=NULL;

        rc = sqlite3_open("/home/user/sqlite-c/stations.sqlitedb", &db);

        if (rc != SQLITE_OK) {
                printf("Cannot open database: %s\n", sqlite3_errmsg(db));
                sqlite3_close(db);
                return 1;
        }

        // stmtの内部バッファクリア
        sqlite3_reset(stmt);

        // stmt を生成する
        sql = "SELECT station FROM station_info";
        rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, NULL);
        if (rc != SQLITE_OK){
                printf("クエリーが失敗しました。\n");
                sqlite3_finalize(stmt);
                sqlite3_close(db);
                return 1;
        }

        // 結果を1行ずつ処理する
        while (SQLITE_ROW == (rc=sqlite3_step(stmt))){
                printf("station=%s\n", sqlite3_column_text(stmt, 0));
        }

        if (rc != SQLITE_DONE){
                printf("クエリーが失敗しました。\n");
                sqlite3_finalize(stmt);
                sqlite3_close(db);
                return 1;
        }

        // stmt を開放
        sqlite3_finalize(stmt);
        sqlite3_close(db);

}
やっぱりC言語の方がコード量が多い。
ところでPHPでのSQLITE3_OPEN_READONLYはCではどう記述するんだろ。
スポンサーサイト

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。