linux 使用sqlite3

1:c中使用sqlite3需要调用函数接口操作:
 sqlite3 *db;
 int status=sqlite_open("dbname",&db);//打开或者创建数据库
 int status=sqlite3_exec(db,yuju,huitiaohanshu,0,cuowuzhizhen);//数据库所有的操作都得通过这个函数执行
 sqlite3_close(db);//使用完后要关闭数据库资源
2:sqlite3语句:
 建表:
  create table pic([picId] integer PRIMARY KEY AUTOINCREMENT, [InsertTime] TimeStamp NOT NULL DEFAULT (datetime(‘now‘,‘localtime‘)), [url] varchar(20));
  //创建了一个有三个字段(picId,url,inserttime)并且这里的插入时间为自动插入当前当地时间
  约束条件:
   not null:
   unique:唯一
   primary key:主键
   foreign key:外键(创建该表和父表之间的联系)
   check:对该项输入内容的条件检查
   default:默认值
  数据类型:(相似匹配,会自动寻找比较合适的具体数据类型进行匹配)
   integer:
    int integer int2 int8 (unsigned big int) (big int)
   text:
    character(20) varchar(255) text clob....
   none:
   real:
    real double float..
   numeric:
    boolean data datetime
  create table teacher(id integer primary key auto increment);
  create table stu (id integer primary key autoincrement,
      name varchar(20) check(length(name)>3),
      tel varchar(11) not null default ‘13631629322‘,
      cls integer not null ,
      unique(name,tel),//设置name和tel的组合唯一
      foreign key(cls) references teacher(id));//绑定两个表中的id
 插入:
  insert into pic([picId],[url]) values(null,‘%s‘);
  //当每个字段都要插入时可以缺省表后面的参数
  insert into stu1 select * from stu;
  //将一个表的所有内容导入另外一个
 查询:
  select * from pic;
  select name from stu where id=0;
  select id from stu order by id;//由id排序输出
  select * from stu where name like "t%";//找到stu中名字以t开头的数据
  select * from stu group by id having id>2;//查询id>2的数据并且按照id分组
  select * from stu limit 1 offset 2;//从索引2开始输出后面一个数据
  //c语言中查询一般是使用的回调,在执行sql语句的时候就传入查询数据以后应该怎么处理的函数

例子:

#include <stdio.h>
#include<time.h>
#include <sqlite3.h>
#include<string.h>

//查询的回调函数声明
int select_callback(void * data, int col_count, char ** col_values, char ** col_Name);

int main(int argc, char * argv[])
{
  const char * sSQL1 = "create table pic([picId] integer PRIMARY KEY AUTOINCREMENT, [InsertTime] TimeStamp NOT NULL DEFAULT (datetime(‘now‘,‘localtime‘)), [url] varchar(20));";
  char * pErrMsg = 0;
  int result = 0;
  // 连接数据库
  sqlite3 * db = 0;
  int ret = sqlite3_open("./test9.db", &db);
  if( ret != SQLITE_OK ){
    fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db));
    return(1);
  }
  printf("数据库连接成功!\n");

  // 执行建表SQL
  sqlite3_exec( db, sSQL1, 0, 0, &pErrMsg );
  if( ret!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", pErrMsg);
    sqlite3_free(pErrMsg);
    return 1;
  }
  printf("建表成功!\n");

  // 执行插入记录SQL
  //result = sqlite3_exec( db, "insert into pic([url]) values(‘/c‘);", 0, 0, &pErrMsg);
  int i;
  for(i=0;i<5;i++){
      if(sqlite3_exec( db, "insert into pic([picId],[url]) values(null,‘/c‘)", 0, 0, &pErrMsg)!= SQLITE_OK){
        fprintf(stderr, "insert SQL error: %s\n", pErrMsg);
        sqlite3_free(pErrMsg);
        printf("插入失败!\n");
      }else{
          printf("插入数据成功\n");
      }
  }
  // 查询数据表
  printf("开始查询数据库内容\n");
  //sqlite3_exec( db, "select * from pic;", select_callback, 0, &pErrMsg);
  if(sqlite3_exec( db, "select * from pic;", select_callback, 0, &pErrMsg)!=SQLITE_OK){
      fprintf(stderr, "insert SQL error: %s\n", pErrMsg);
  }else{
      printf("查询失败 \n");
  }
  // 关闭数据库
  sqlite3_close(db);
  db = 0;
  printf("数据库关闭成功!\n");
  return 0;
}

int select_callback(void * data, int col_count, char ** col_values, char ** col_Name)
{
  // 每条记录回调一次该函数,有多少条就回调多少次
  int i;
  for( i=0; i < col_count; i++){
    printf( "%s = %s\n", col_Name[i], col_values[i] == 0 ? "NULL" : col_values[i] );
  }

  return 0;
}
时间: 2024-10-16 21:52:37

linux 使用sqlite3的相关文章

基于linux的sqlite3移植和使用(s3c2440)

sqlite3环境的建立 我下载的是sqlite-amalgamation-3.7.3.tar.gz,并将下载的文件解压.解压后生成sqlite-3.7.3的文件夹,进入该文件夹,执行"./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/project/sqlite-arm",其中host为交叉编译工具,prefix为编译生成的文件的目录(可根据自己的需要自行修改).执行完上面的步骤之后,在文件夹中会生成一个Ma

linux下sqlite3可视化工具

1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库. 2.安装:要安装sqlite3,可以在终端提示符后运行下列命令:sudo apt-get install sqlite3检查版本sqlite3 -version3.测试当前目录下建立test.db测试数据库文件sqlite3 test.db查询信息.database退出.exit 4.图形界面(一)可以选择sqlitebrowser程式(qt3)sudo apt-get install sqlitebrowser启动

linux C sqlite3 mysql

/* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************ SQLITE_OK = 0; 返回成功 SQLITE_ERROR = 1; SQL错误或错误的数据库 SQLITE_INTERNAL = 2; An internal logic error in SQLite SQLITE_PERM = 3; 拒绝访问 SQLITE_ABORT = 4; 回调函数

Linux下sqlite3常用命令!!!

sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档.备注:本文所有操作均在root用户下进行. 1.安装sqlite3ubuntu下安装sqlite3直接在终端运行命令:#apt-get install sqlite3查看版本信息:#sqlite3 -version 2 .sqlite3常用命令当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:#sqlite3 test.db 查看数据库文件信息命令(

linux c++ sqlite3

1,基本信息: 1)#include <sqlite3.h> 2)int rc = sqlite3_open(db_name, &db);//不存在会创建文件 3)查询后直接返回结果 而不是回调 intsqlite3_get_table (sqlite3 *,   // 打开的数据库对象指针                   const char * sql, // 要查询的 sql 语句                   char *** resultp, // 查询结果    

linux装sqlite3

下载sqlite3源码包 tar xvfz sqlite-src-3.3.5 cd sqlite-3.3.5 ./configure –no-tcl make python继续一次. apt install -f 修复关系 http://www.mamicode.com/info-detail-1738649.html 原文地址:https://www.cnblogs.com/pythonClub/p/9735423.html

ubuntu下基于sqlite3后台的php环境的搭建

最近准备把公司的服务器换成linux 数据库sqlite3 搭建过程记录如下: 1 sqlite3安装.. apt-get install sqlite 2.PHP服务器搭建. apt-get install apache2 libapache2-mod-php5 apt-get install php5 apt-get install php5-sqlite 3 参考:http://www.cnblogs.com/wenanry/archive/2012/11/13/2767779.html

[Sqlite] --&gt; Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

一:在 Windows 上安装 SQLite  1,下载 请访问SQLite下载页面http://www.sqlite.org/download.html,从Windows 区下载预编译的二进制文件.需要下载 sqlite-shell-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件,这里下载sqlite-dll-win32-x86-3080600.zip和sqlite-shell-win32-x86-3080600.zip安装包.2个安装包下载地址如下: ht

Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

一:在 Windows 上安装 SQLite 1,下载 请访问SQLite下载页面http://www.sqlite.org/download.html,从Windows 区下载预编译的二进制文件.需要下载 sqlite-shell-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件,这里下载sqlite-dll-win32-x86-3080600.zip和sqlite-shell-win32-x86-3080600.zip安装包.2个安装包下载地址如下: htt