sqlite C/C++ API

前端之家收集整理的这篇文章主要介绍了sqlite C/C++ API前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

官网:https://sqlite.org/download.html


下载代码安装三步走:

./configure		// ./configure --help查看安装参数设置,学习configure的配置,明白安装后include、lib、bin等文件的位置
make 
make install

学习sql基本语法,各个数据库基本相同 http://www.w3cschool.cc/sqlite/sqlite-tutorial.html


常用函数

int sqlite3_open(
  const char *filename,/* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: sqlite db handle */
);

typedef int (*sqlite3_callback)(
void*,/* Data provided in the 4th argument of sqlite3_exec() */
int,/* The number of columns in row */
char**,/* An array of strings representing fields in the row */
char**    /* An array of strings representing column names */
);  

int sqlite3_exec(
  sqlite3*,/* An open database */
  const char *sql,/* sql to be evaluated */
  int (*callback)(void*,int,char**,char**),/* Callback function */
  void *,/* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

int sqlite3_close(sqlite3*);

例子:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

#define DB_FILENAME "/home/suo/Desktop/sqlite/datadir/sqlite.db"
static int flag = 0;

static int callback(void *userData,int columnNum,char **columnText,char **columnName)
{
	int index;
	if (userData && !flag++) {
		fprintf(stdout,"---------%s------\n",(const char*)userData);
		for (index=0; index<columnNum; index++) {
			printf("%s\t",columnName[index]);
		}
		printf("\n");
	}
	for(index=0; index<columnNum; index++){
		printf("%s\t",columnText[index] ? columnText[index] : "NULL");
	}
	printf("\n");
	
	return 0;
}

int main(int argc,char* argv[])
{
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;
   char *sql;

   rc = sqlite3_open(DB_FILENAME,&db);

   if( rc != sqlITE_OK){
      fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));
      exit(0);
   }else{
      fprintf(stderr,"Opened database successfully\n");
   }
   
   sql = "CREATE TABLE COMPANY("\
         "ID INT PRIMARY KEY  NOT NULL,"\
		 "NAME           TEXT NOT NULL,"\
		 "AGE            INT  NOT NULL,"\
		 "ADDRESS        CHAR(50),"\
		 "SALARY         REAL);";

	rc = sqlite3_exec(db,sql,callback,(void *)sql,&zErrMsg);
	if(rc != sqlITE_OK){
		fprintf(stderr,"sql error :%s\n",zErrMsg);
		sqlite3_free(zErrMsg);
	} else {
		fprintf(stdout,"Table created successfully\n");
	}
	
	sql = "INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) "\
	      "VALUES(1,'Paul',32,'California',20000.00); "\
		  "INSERT INTO COMPANY(ID,SALARY) "\
		  "VALUES(2,'Allen',25,'Texas',15000.00);"
		  "INSERT INTO COMPANY(ID,SALARY) "\
		  "VALUES(3,'Teddy',23,'Norway',20000.00);"
		  "INSERT INTO COMPANY(ID,SALARY) "\
		  "VALUES(4,'Mark','Rick-Mond',65000.00);";
	rc = sqlite3_exec(db,"sql error: %s","Records created successfully\n");
	}
	
	sql = "SELECT * FROM COMPANY;";
	rc = sqlite3_exec(db,"Select records successfully\n");
	}
	
   sqlite3_close(db);
   
   return 0;
}


对应Makefile:

#! /usr/make

rm=/bin/rm -f
CC = gcc
DEFS =
PROGNAME = testsqlite
INCLUDES = -I /home/suo/Desktop/sqlite/include
DEFINES += $(INCLUDES) $(DEFS) 
CFLAGS = $(DEFINES) -g -Wall -O2
LDFLAGS = 

SRCS = testsqlite.c
OBJS = testsqlite.o
LIBS = -L./lib -lsqlite3


.cpp.o:
	$(rm) $@
	$(CC) $(CFLAGS) -c $*.cpp
	
all: $(PROGNAME)
$(PROGNAME) : $(OBJS) 
	$(CC) $(CFLAGS) -o $(PROGNAME) $(OBJS) $(LDFLAGS) $(LIBS)

clean:
	$(rm) $(OBJS) $(PROGNAME) core *~

执行结果:
Opened database successfully
Table created successfully
Records created successfully
---------SELECT * FROM COMPANY;------
ID      NAME    AGE     ADDRESS SALARY
1       Paul    32      California      20000.0
2       Allen   25      Texas   15000.0
3       Teddy   23      Norway  20000.0
4       Mark    25      Rick-Mond       65000.0
Select records successfully
原文链接:https://www.f2er.com/sqlite/200582.html

猜你在找的Sqlite相关文章