注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

C++ 操作SQLite数据库Demo  

2013-02-18 21:38:54|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、准备工作

  到http://www.sqlite.org/download.html下载Source Code里的amalgamation版,里头有4个文件,sqlite3.c、sqlite3.h、shell.c、sqlite3ext.h。它们具体是干嘛的我还不清楚,容后具体看看,现在只是根据网上看到的方法,简单做一个Demo试试。这里我们用到的文件有sqlite3.c和sqlite3.h,sqlite3.h里声明的有各种接口函数,而sqlite3.c用于生成需要链接的库文件。这篇日志主要是记录怎么组织的文件,做个笔记。

 

二、VC6.0版

  新建一个Win32 Console Application,将自写的main.cpp及前面提到的sqlite3.h、sqlite3.c添加到工程中,直接编译运行即可。

 

三、GCC版

  将main.cpp、sqlite3.h、sqlite3.c置于同一目录下,并在同一目录下新建一文本文件makefile,执行make命令即可。

 

四、相关源码

  (1)不规范的makefile

main.exe: main.cpp sqlite3.lib
 g++ main.cpp sqlite3.lib -o main.exe

sqlite3.lib: sqlite3.o
 ar crv sqlite3.lib sqlite3.o

sqlite3.o:sqlite3.c
 gcc -c sqlite3.c -o sqlite3.o

(2)main.cpp(源于网络http://dearymz.blog.163.com/blog/static/20565742011518102612855/

#include "sqlite3.h"

#include <stdio.h>
#include <tchar.h>

#include <process.h>

#include <iostream>
using std::cout;
using std::endl;

bool test(sqlite3* db)

{
    sqlite3_stmt* stmt = NULL;
    if(sqlite3_prepare_v2(db,
                "create table if not exists files("
                "id int primary key not null, "
                "name string unique not null, "
                "size int not null, "
                "data blob not null)",
                512, &stmt, NULL) != SQLITE_OK)
        return false;

    if(sqlite3_step(stmt) != SQLITE_DONE)
        return false;

    if(sqlite3_finalize(stmt) != SQLITE_OK)
        return false;

    if(sqlite3_prepare_v2(db,
                "insert into files values(last_insert_rowid() + 1, ?, 0, ?)",
                512, &stmt, NULL) != SQLITE_OK)
        return false;

    if(sqlite3_reset(stmt) != SQLITE_OK)
        return false;

    if(sqlite3_bind_text(stmt, 1, "http://dearymz.blog.163.com", -1, NULL) != SQLITE_OK)
        return false;

    if(sqlite3_bind_text(stmt, 2, "http://dearymz.blog.163.com", -1, NULL) != SQLITE_OK)
        return false;

    if(sqlite3_step(stmt) != SQLITE_DONE)
        return false;

    if(sqlite3_finalize(stmt) != SQLITE_OK)
        return false;

    if(sqlite3_prepare_v2(db,
                "select count(*) from files",
                512, &stmt, NULL) != SQLITE_OK)
        return false;

    if(sqlite3_step(stmt) != SQLITE_ROW)
        return false;

    cout << sqlite3_column_int(stmt, 0) << endl;

    if(sqlite3_finalize(stmt) != SQLITE_OK)
        return false;

    return true;
}

int _tmain(int argc, _TCHAR* argv[])

{
    sqlite3* db = NULL;

    if(sqlite3_open("test.db3", &db) == 0)
    {
        if(test(db))
            cout << "OK" << endl;
        else
            cout << "Error!" << endl;
    }

    cout << sqlite3_errmsg(db) << endl;

    sqlite3_close(db);

    system("pause");

    return 0;
}

  评论这张
 
阅读(914)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016