がんばって英語で書くブログ
英語勉強中なので、ブログも英語で書こうかと。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

sqlite3 with C
I think recently sqlite is popular.

so I wrote test program for studying sqlite3.


$ sqlite3 test_db
SQLite version 3.2.7
Enter ".help" for instructions
sqlite> create table sample (
...> id INTEGER,
...> name TEXT
...> );
sqlite> insert into sample values(1, 'foo1');
sqlite> insert into sample values(2, 'foo2');
sqlite> select * from sample;
1|foo1
2|foo2
sqlite> .quit

------------------------------------------------------------------
/*
* this is test program for studying sqlite3.
* gcc sample.c -lsqlite3
*/

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

void usage(char *arg);
int do_select(char *database, char *table);
void show_error(sqlite3 *db, int line);

int main(int argc, char **argv)
{
if (argc != 3)
usage(argv[0]);

return do_select(argv[1], argv[2]);
}

int do_select(char *database, char *table)
{
sqlite3 *db;
sqlite3_stmt *stmt;
char sql[256];
int ret;

if (sqlite3_open(database, &db) != SQLITE_OK) {
fprintf(stderr, "can't open database(%s)\n", database);
return -1;
}

memset(sql, 0, sizeof(sql));
sprintf(sql, "select * from %s\n", table);

if (sqlite3_prepare(db, sql, strlen(sql), &stmt, NULL) != SQLITE_OK)
show_error(db, __LINE__);

while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
int cnt, i;

cnt = sqlite3_column_count(stmt);

for (i = 0; i < cnt; i++)
printf("%s ", sqlite3_column_text(stmt, i));

putchar('\n');
}

if (ret != SQLITE_DONE)
show_error(db, __LINE__);

if (sqlite3_finalize(stmt) != SQLITE_OK)
show_error(db, __LINE__);

if (sqlite3_close(db) != SQLITE_OK)
show_error(db, __LINE__);

return 0;
}

void show_error(sqlite3 *db, int line)
{
fprintf(stderr, "[lin %d] %s\n", line, sqlite3_errmsg(db));
exit(-1);
}

void usage(char *arg)
{
fprintf(stderr, "usage %s [database] [table]\n", arg);
exit(-1);
}



スポンサーサイト

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://foobar.blog23.fc2.com/tb.php/35-047e2466
この記事にトラックバックする(FC2ブログユーザー)

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