Linux数据库编程Sqlite

来源:互联网 发布:excel2007软件 编辑:程序博客网 时间:2024/06/05 20:56

新建一个学生数据库,在建一个学生数据表,进行增加和查找等操作。




#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;}



原创粉丝点击