#include "stdlib.h"
#include "stdio.h"

#include "sqlite3.h"

int main()
{

   charcSql[1024] = {0};
    sqlite3*pSql = NULL;
    char *pError= NULL;
    int i = 0, j= 0;
    char**ppTableData = NULL;
    int nRow =0, nColumn = 0;
    int pos =0;

//打开数据库
   sqlite3_open("server.db",&pSql);

//如果userInfo表不存在,则创建一个。
   sprintf(cSql, "create table if not existsuserInfo"
      "("
      "cUserName varchar(32) not null primarykey,"//用户名 关键字 不能为空
      "cUserPwd varchar(32) not null,"//用户密码 不能为空
      "nUserPower interger default 1,"//用户权限 默认为1
      "cCreateTime varchar(32)default(datetime('now','localtime')),"//创建时间 默认为当前本地时间
      "cModifyTime varchar(32)default(datetime('now','localtime')),"//最后一次修改时间
      "cLoginTime varchar(32)default(datetime('now','localtime')),"//最后一次登录时间
      "cDescribe varchar(256) default('nodescribe')"//用户描述信息
      ")");

if(sqlite3_exec(pSql, cSql, 0, 0,&pError) != SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
    }

//删除一项
   sprintf(cSql, "delete from userInfo where cUserName='%s'","admin");
   if(sqlite3_exec(pSql, cSql, 0, 0, &pError) !=SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
    }

//插入一项UserName = admin, cUserPwd = password
   sprintf(cSql, "insert into userInfo (cUserName,cUserPwd) values ('%s', '%s')", "admin", "password");
   if(sqlite3_exec(pSql, cSql, 0, 0,&pError) != SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
    }

//修改一项
   sprintf(cSql, "update userInfo set cUserPwd='%s', nUserPower=%d,cDescribe='%s' where cUserName='%s'", "88888888", 2, "super user","admin");
   if(sqlite3_exec(pSql, cSql, 0, 0, &pError) !=SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
       return-1;
    }

//查找所有项,并显示
   sprintf(cSql, "select * from userInfo");
   if(sqlite3_exec(pSql, cSql, 0, 0,&pError) != SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
    }
    else
    {
     //获取选择的项目
      sqlite3_get_table(pSql, cSql,&ppTableData, &nRow,&nColumn, &pError);
      printf("nRow  = %d, nColumn = %d\r\n", nRow, nColumn);
      pos = nColumn;
      for(i = 0;i < nRow;i++)
      {
         for(j = 0;j < nColumn;j++)
         {
            printf("i %d, j %d, value = %s\r\n", i, j,ppTableData[pos++]);
         }
      }
      //释放空间
      sqlite3_free_table(ppTableData);
    }

//查找cUserName = admin,cUserPwd = password的项
   sprintf(cSql, "select * from userInfo wherecUserName='admin' and cUserPwd='password'");
   if(sqlite3_exec(pSql, cSql, 0, 0,&pError) != SQLITE_OK)
    {
      printf("(%s)\r\n", pError);
    }
    else
    {
      sqlite3_get_table(pSql, cSql,&ppTableData, &nRow,&nColumn, &pError);
      if(nRow <= 0)
      {
         printf("no find cUserName='admin' andcUserPwd='password'\r\n");
      }
      else
      {
         printf("find success\r\n");
         pos = nColumn;
         for(i = 0;i < nRow;i++)
         {
            for(j = 0;j < nColumn;j++)
            {
               printf("i %d, j %d, value = %s\r\n", i, j,ppTableData[pos++]);
            }
         }
      }
      sqlite3_free_table(ppTableData);
    }

//关闭数据库
   sqlite3_close(pSql);

return0;
}

Linux下,sqlite简单实例相关推荐

  1. 用C语言编写一个Linux下的简单shell程序

    这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...

  2. linux上用的端口转发工具,linux下最简单好用的的端口转发工具

    linux下最简单好用的的端口转发工具 解压安装 tar zxvf rinetd.tar.gz make make install 编辑配置 vi /etc/rinetd.conf 0.0.0.0 8 ...

  3. linux线程池简单实例

    linux线程池简单实例 转载于:https://www.cnblogs.com/adong7639/p/5044685.html

  4. 华为关于LINUX的认证,华为认证:华为TA128在LINUX下的简单设置

    华为认证:华为TA128在LINUX下的简单设置 华为认证:华为TA128在LINUX下的简单设置,来看看吧. 现以LINUX RH7为例说明TA128在LINUX下的使用方法. 启动您的X,如果还没 ...

  5. 《Linux指令从入门到精通》——4.2 Linux下的简单文字模式文本编辑器

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.2节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. linux下最简单多线程单文件socks5代理proxy服务器程序(仅一个c文件,带详细注解)

    2020.9.11 网上看的都比较复杂,GITHUB找了一个多线程的相对简单的MicroSocks项目,花了几周时间(没办法,菜鸟一个)改了一下,改成单文件,测试OK. /* wxl_socks5_p ...

  7. Linux下最简单的动态域名用法

    Linux下最简单的动态域名用法 估计做IT的哥们象我这样ADSL包月的应该很多,我一般家里有一部电脑是24小时开机的,它上面跑着我的各种应用,也相当于我的一个网络硬盘.为了方便自己能从远程访问,我们 ...

  8. Linux 下最简单快捷的端口转发软件 redir 简介

    Linux 下的端口转发软件很多,像 ssh.iptables.socat 等等,但论简单易用,据我所知,还得算这个小小的 redir.它可以非常方便的把本机的TCP 端口转发给本机或其它机器的特定端 ...

  9. linux下c/c++实例之十socket简单应用

    转自:http://blog.csdn.net/taiyang1987912/article/details/49738351 一.简介 通过socket扫描本机打开的tcp端口号,模拟用户名.密码登 ...

  10. linux下sqlite安装及基本使用

    目录 一. sqlite基本介绍 二. linux下安装sqlite3过程 方法一:apt 方法二:从官网下载sqlte的安装包解压安装 三. sqlite图形化管理界面DB Browser for ...

最新文章

  1. 面部识别必看!5篇顶级论文了解如何实现人脸反欺诈、跨姿势识别等(附链接)...
  2. vi php自动补全,vim7.2 代码自动补全的配置 | 学步园
  3. Spring读取jar包外部的配置文件properties
  4. 内存不够用还要速度快,终于找到可以基于 File 的 Cache 了
  5. 剑指offer之礼物的最大值
  6. Software-Defined Networking (SDN) Definition-软件定义网络
  7. MongoDB Sharding 机制分析
  8. php bi系统,bi系统是什么系统
  9. 查看dll或exe文件的依赖项——使用vs自带的dumpbin工具
  10. 【开发】微信公共帐号机器人WeBot
  11. S/MIME电子邮件签名证书
  12. # 开发 VR 多人游戏的技术挑战
  13. phpmywind最新版sql注入以及后台目录遍历和文件读取
  14. 安卓相机camera2开发知识点
  15. unity如何用代码创建自已的logo
  16. SQL Server 2012笔记分享-35:配置客户端网络协议
  17. AD从原理图到PCB超详细教程
  18. 一些我平常用到的软件
  19. Wireshark抓包定位系统网页响应慢 | 网络工程师甩锅技术
  20. 杜克大学2年前的研究上热搜!单身竟然还老得快?太难了!!!

热门文章

  1. 13 | 线性排序:如何根据年龄给100万用户数据排序?
  2. spring技术内幕——深入解析spring架构与设计原理
  3. qt c语言socket,c – Qt双向客户端服务器使用QTcpSocket和QTcpServer
  4. nuxt.js 配置后端的请求地址
  5. linux 浏览器 links,linux下的命令行浏览器links
  6. 【C++深度剖析教程36】深入理解函数模板
  7. Linux系统添加永久静态路由的方法
  8. Ubuntu上安装Samba服务器实现家庭共享
  9. JS取消浏览器文本选中的方法
  10. 学大数据找IT十八掌