• SQLite在VC下的使用


    一、SQLite简介

    SQLite 是用C语言编写的开源数据库,主要用于嵌入式,你也可以把它集成在自己的桌面程序中,也有人将其替代Access,用作后台数据库。
    SQLite 支持多数SQL92标准,例如:索引、限制、触发和查看支持。
    支持 NULL、INTEGER、REAL、TEXT 和 BLOB 数据类型,支持事务。

    二、下载SQLite

    SQLite可以到官方站点下载
    http://www.sqlite.org/download.html

    包括:Linux,Mac OS X, Windows下的已编译文件以及源代码、帮助文档。

    三、SQLite的简单使用

    3.1 建立数据库

    C:\sqlite-3_6_11> sqlite3.exe dbname.db

    sqlite3.exe后面跟数据库文件名

    3.2 创建数据表

    sqlite> create table users(userid varchar(20) PRIMARY KEY,
     ...> age int,
     ...> birthday datetime);

    3.3 添加记录 

    insert into users values('wang',20,'1989-5-4');
    insert into users values('li',22,'1987-11-16');

    3.4 查询记录

    select * from users order by birthday;

    3.5 删除记录

    delete from users where userid='wang';

    3.6 退出

    sqlitesqlite> .exit

    SQLite数据库的数据结构是存贮在 "sqlite_master" 表中

    具体命令可以输入 .help查看或参考帮助文档

    四、编译LIB

    需要到SQLite网站下载sqlitedll-3_6_11.zip,以VS 2008为例:

    在DOS命令行下:
    PATH = D:\Program Files\Microsoft Visual Studio 9.0\VC\bin;%PATH%
    PATH = D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;%PATH%
    LIB /DEF:sqlite3.def /machine:IX86

    五、在VC下使用
    #include "../sqlite3_lib/sqlite3.h"
    #pragma comment(lib, "../sqlite3_lib/sqlite3.lib")
    static int _sql_callback(void * notused, int argc, char ** argv, char ** szColName)
    {
      int i;
      for ( i=0; i < argc; i++ )
      {
          printf( "%s = %s\n", szColName[i], argv[i] == 0 ? "NUL" : argv[i] );
      }
      return 0;
    }

    int main(int argc, char * argv[])
    {
      const char * sSQL1 = "create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);";
      const char * sSQL2 = "insert into users values('wang',20,'1989-5-4');";
      const char * sSQL3 = "select * from users;";

      sqlite3 * db = 0;
      char * pErrMsg = 0;
      int ret = 0;
      
      // 连接数据库
      ret = sqlite3_open("./test.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);
      }
          
      // 执行插入记录SQL
      sqlite3_exec( db, sSQL2, 0, 0, &pErrMsg);

      // 查询数据表
      sqlite3_exec( db, sSQL3, _sql_callback, 0, &pErrMsg);

      // 关闭数据库
      sqlite3_close(db);
      db = 0;
          
      return 0;
    }

    总结:
    正如SQLite的名称,SQLite有其适合的应用环境,对于高流量或数据庞大的Web站点,还是应该考虑使用DBMS。
  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/top5/p/1813762.html
Copyright © 2020-2023  润新知