网上好多老例子在我机器上不能运行,今天终于找到可运行的例子了.
高亮源码与最新源码请见: https://github.com/hy0kl/unp/blob/master/sqlite-c.c
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#define SQL_BUF_LEN 2048
#define DB_NAME "player.db"
/**
* gcc -o t.sqlite sqlite-c.c -lsqlite3
*
* */
intmain( intargc, char**argv )
{
sqlite3 *db;
sqlite3_stmt *stmt;
char*zTail;
charsql[SQL_BUF_LEN] = {0};
//打开数据库
intr = sqlite3_open(DB_NAME, &db);
if(r)
{
printf("[Error]: %s\n", sqlite3_errmsg(db));
returnSQLITE_ERROR;
}
else
{
printf("You have opened a sqlite3 database named %s successfully!\n\
Congratulations! Have fun ! ^-^ \n", DB_NAME);
}
//Create table 创建Table
snprintf(sql, sizeof(sql),"CREATE TABLE players (ID INTEGER PRIMARY KEY, name TEXT, age INTERER);");
r = sqlite3_exec(db, sql, NULL, NULL, &zTail);
if(r)
{
printf("[Error]: %s\n", zTail);
}
else
{
printf("It NO table, create it success.\n");
}
// INSERT 插入数据
char*test_name[] = {
"Jerry",
"Tom",
"Tester"
};
inttest_age[] = {
11,
23,
56
};
inti = 0;
for(i = 0; i < 3; i++)
{
snprintf(sql, sizeof(sql), "INSERT INTO players (name, age) VALUES('%s', %d);",
test_name[i], test_age[i]);
r = sqlite3_exec(db, sql, NULL, NULL, &zTail);
if(r)
{
printf("[Error]: %s\n", zTail);
}
else
{
printf("INSERT SQL: [%s] success.\n", sql);
}
}
// query
introws = 0;
intcolumn = 0;
inttotal = 0;
intk = 0;
char**result = NULL;
snprintf(sql, sizeof(sql), "SELECT * FROM players");
r = sqlite3_get_table(db, sql, &result, &rows, &column, &zTail);
if(0!= r)
{
printf("[Error]: %s\n", zTail);
gotoFINISH;
}
total = (rows + 1) * column;
printf("[Query] rows: %d, column: %d, total: %d\n", rows, column, total);
for(i = 0; i < total;)
{
for(k = i; k < i + column; k++)
{
printf("%s\t", result[k]);
}
printf("\n");
i += column;
}
sqlite3_free_table(result);
result = NULL;
FINISH:
//关闭数据库
sqlite3_close(db);
return0;
}
执行结果:
hy0kl@MacBook:~/Study/unp$ gcc -o t.sqlite sqlite-c.c -lsqlite3
hy0kl@MacBook:~/Study/unp$ ./t.sqlite
You have opened a sqlite3 database named player.db successfully!
Congratulations! Have fun ! ^-^
[Error]: table players already exists
INSERT SQL: [INSERT INTO players (name, age) VALUES('Jerry', 11);] success.
INSERT SQL: [INSERT INTO players (name, age) VALUES('Tom', 23);] success.
INSERT SQL: [INSERT INTO players (name, age) VALUES('Tester', 56);] success.
[Query] rows: 15, column: 3, total: 48
IDnameage
1Jerry11
2Tom23
3Tester56
4Jerry11
5Tom23
6Tester56
7Jerry11
8Tom23
9Tester56
10Jerry11
11Tom23
12Tester56
13Jerry11
14Tom23
15Tester56