linux体系编程:数据库

打印 上一主题 下一主题

主题 1969|帖子 1969|积分 5907

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.
数组、链表、变量-----》内存:步伐运行竣事、掉电数据丢失
文件----------------------》硬盘:步伐运行竣事、掉电数据不丢失
数据库: 专业存储数据、大量数据-----》硬盘
 sqlite相干的命令
      .tables                         查看数据库中的表
      .headers on/off            开启或者关闭表头
      .mode column              列对齐
      .width 列宽1 列宽2      设置每一列的列宽
      .schema  表名              查看表的布局
sqlite的SQL语句
        每个sql语句后面必须要有一个;
        INTEGER : 整形
        REAL: 浮点型
        TEXT:文本类型,字符串
        NULL : 空
       1.创建表
          create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型) ;
       2. 插入数据
           insert into 表名 values(值1, 值2, 值3);
       3. 查询
          select 列名1,列名2  from 表名;
          select *  from 表名;
     条件查找:
          select *  from 表名 where 列 关系运算符 (> < = != >= <= and or);
 like : 模糊匹配
         % 可以通配多个字符
        _  只能通配一个字符
        升序分列
        select * from 表名 order by 列名 ASC;
        降序分列:
        select * from 表名 order by 列名 DESC;
    4. 删除一行
        delect from 表名 where 列名 关系运算符 值;
    5. 删除一张表
        drop 表名;      
    6. 修改    
        update 表名 set 列名=新值 where 列=值;
    7. 设置主键值主动增长列
        1. 主键值主动增长列的数据类型必须是INTEGER
        2. 类名 INTEGER PRIMARY KEY AUTOINCREMENT,
    8 .多表联查
         内连接   INNER JOIN
        

         外连接   LEFT OUTER JOIN         
  

3. sqlite3提供的c/c++ API接口
     int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
    功能:打开数据库,如果不存在,则创建
    参数:
               filename : 数据库名称
               ppDb   :保存数据库句柄的地址   
    返回值:
               成功:SQLITE_OK
               失败:错误码  
int sqlite3_exec(
  sqlite3*pdb,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *arg,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);
功能:执行sql语句
参数:
          pdb : 数据库句柄
         sql : 要执行的sql语句的首地址
        callback : 当执行select语句时,利用到
        arg:当执行select语句时,利用到,通报给回调函数的第一个参数
       errmsg :存储错误信息的地址                             
返回值:
              成功:SQLITE_OK
               失败:错误码  
  1. #include<stdio.h>
  2. #include<sqlite3.h>
  3. int main(int argc,char *argv[])
  4. {
  5.     sqlite3 *pdb;
  6.     int ret = sqlite3_open("./sth.db",&pdb);
  7.     if(ret != SQLITE_OK)
  8.     {
  9.         fprintf(stderr,"sqlite3_open fail:%s\n",sqlite3_errmsg(pdb));
  10.         return -1;
  11.     }
  12.     char *sql = "create table if not exists class4(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL);";
  13.     ret = sqlite3_exec(pdb,sql,NULL,NULL,NULL);
  14.     if(ret != SQLITE_OK)
  15.     {
  16.         fprintf(stderr,"sqlite3_exec fail:%s\n",sqlite3_errmsg(pdb));
  17.         sqlite3_close(pdb);
  18.         return -1;
  19.     }
  20.     char *sql1 = "insert into class4 values(NULL,"zhangsan",99);";
  21.     char *sql2 = "insert into class4 values(NULL,"lisi",89);";
  22.     char *sql3 = "insert into class4 values(NULL,"wangwu",67);";
  23.     sqlite3_exec(pdb,sql1,NULL,NULL,NULL);
  24.     sqlite3_exec(pdb,sql2,NULL,NULL,NULL);
  25.     sqlite3_exec(pdb,sql3,NULL,NULL,NULL);
  26.     sqlite3_close(pdb);
  27.     return 0;
  28. }
复制代码
int (*callback)(void*,int column_cnt,char**column_value,char**column_name), 
int callback(void* arg, int , char **, char **);
功能:在利用sqlite3_exec执行select语句时, 每查找到一条数据,则调用一次回调
参数:
         arg : sqlite3_exec通报的第4个参数
         column_cnt: 查找到的数据的列数
         column_value:  查找到的一行数据的每一列值的地址的聚集
         column_name:查找到的一行数据的每一列列名的地址的聚集
返回值:
          成功 :1     失败:0
注意:1.每找到一行,回调被触发一次
           2. 回调函数必须返回0
  1. #include<stdio.h>
  2. #include<sqlite3.h>
  3. int flag = 0;
  4. int callback(void *arg,int column_cnt,char **column_value,char **column_name)
  5. {
  6.     if(0 == flag)
  7.     {
  8.         for(int i = 0;i < column_cnt;++i)
  9.         {
  10.             printf("%s ",*(column_name + i));
  11.         }
  12.         printf("\n");
  13.         flag = 1;
  14.     }
  15.     for(int i = 0;i < column_cnt;++i)
  16.     {
  17.         printf("%s ",*(column_value + i));
  18.     }
  19.     printf("\n");
  20.     return 0;
  21. }
  22. int callback1(void *arg,int column_cnt,char **column_value,char **column_name)
  23. {
  24.     printf("%s\n",*column_value);
  25.     return 0;
  26. }
  27. int main(int argc,char *argv[])
  28. {
  29.     sqlite3 *pdb;
  30.     int ret = sqlite3_open("./sth.db",&pdb);
  31.     if(ret != SQLITE_OK)
  32.     {
  33.         fprintf(stderr,"sqlite3_open fail:%s\n",sqlite3_errmsg(pdb));
  34.         return -1;
  35.     }
  36.     char *sql = "select name from class4;";
  37.     ret = sqlite3_exec(pdb,sql,callback1,NULL,NULL);
  38.     if(ret != SQLITE_OK)
  39.     {
  40.         fprintf(stderr,"sqlite3_exec fail:%s\n",sqlite3_errmsg(pdb));
  41.         sqlite3_close(pdb);
  42.         return -1;
  43.     }
  44.     sqlite3_close(pdb);
  45.     return 0;
  46. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表