新建一个学生数据库,在建一个学生数据表,进行增加和查找等操作。
#include <stdio.h>
#include <sqlite3.h> // 数据库的头文件
int main()
{
sqlite3 * database;
// 打开数据库
int ret = sqlite3_open("student.db", &database);
if (ret != SQLITE_OK)
{
printf ("打开数据库失败\n");
return -1;
}
printf ("打开数据库成功\n");
char *errmsg = NULL;
char *sql = "create table if not exists student(ID INTEGER,name TEXT,sex TEXT,age INTEGER,primary key(ID))";
ret = sqlite3_exec(database, sql, NULL, NULL, &errmsg);
if (ret != SQLITE_OK)
{
printf ("数据库操作失败:%s\n", errmsg);
return -1;
}
int id;
char name[20];
char sex[2];
int age;
printf ("请输入ID:\n");
scanf ("%d", &id);
printf ("请输入用户名:\n");
scanf ("%s", name);
printf ("请输入性别:\n");
scanf ("%s", sex);
printf ("请输入年龄:\n");
scanf ("%d", &age);
// insert into student values(id, name, sex, age);
char buf[100];
sprintf (buf, "insert into student values(%d, '%s', '%s', %d)", id, name, sex, age);
ret = sqlite3_exec(database, buf, NULL, NULL, &errmsg);
if (ret != SQLITE_OK)
{
printf ("数据库操作失败:%s\n", errmsg);
return -1;
}
// 关闭数据库
sqlite3_close(database);
return 0;
}
#include <stdio.h>
#include <sqlite3.h> // 数据库的头文件
// 1、exec传过来的参数
// 2、代表查询的列数
// 3、char** value 代表一条记录的值 char *value[] = {"1", "zhang1", "M", "12"};
// 4、char** name 代表每一列的字段 char *name[] = {"id", "name", "sex", "age"};
// 每查到一条记录,该函数被调用一次
int msg(void* v, int num, char** value, char** name)
{
int i;
for (i = 0; i < num; i++)
{
printf ("%s : %-8s", name[i], value[i]);
}
printf ("\n");
return 0; // 函数内部一定要返回一个0
}
int main(int argc, char *argv[])
{
sqlite3 * database;
// 打开数据库
int ret = sqlite3_open("student.db", &database);
if (ret != SQLITE_OK)
{
printf ("打开数据库失败\n");
return -1;
}
printf ("打开数据库成功\n");
char *errmsg = NULL;
char *sql = "select * from student";
ret = sqlite3_exec(database, sql, msg, NULL, &errmsg);
if (ret != SQLITE_OK)
{
printf ("数据库操作失败:%s\n", errmsg);
return -1;
}
// 关闭数据库
sqlite3_close(database);
return 0;
}
#include <stdio.h>
#include <sqlite3.h> // 数据库的头文件
int main(int argc, char *argv[])
{
sqlite3 * database;
// 打开数据库
int ret = sqlite3_open("student.db", &database);
if (ret != SQLITE_OK)
{
printf ("打开数据库失败\n");
return -1;
}
// 3、char ***resultp: char *resultp[] = {"id", "name", "sex", "age", "1", "zhang", "M", "12","2".....};
// 4、nrow: 多少行数据
// 5、ncolumn: 多少列数据
char *errmsg = NULL;
char **resultp = NULL;
int nrow, ncolumn;
char *sql = "select * from student";
ret = sqlite3_get_table(database, sql, &resultp, &nrow, &ncolumn, &errmsg);
if (ret != SQLITE_OK)
{
printf ("数据库操作失败:%s\n", errmsg);
return -1;
}
int i;
printf ("nrow = %d, ncolumn = %d\n", nrow, ncolumn);
for (i = 0; i < (nrow+1)*ncolumn; i++)
{
if (i % ncolumn == 0)
printf ("\n");
printf ("%-8s", resultp[i]);
}
printf ("\n");
sqlite3_free_table(resultp);
// 关闭数据库
sqlite3_close(database);
return 0;
}