zoukankan      html  css  js  c++  java
  • SQLite入门操作(一)

    //++其他的头文件

    #include "sqlite3.h"
    #pragma comment(lib,"sqlite3.lib")

    int GetItemCount(sqlite3 *db,LPCTSTR str)//select count(*) from x ;
    {
        sqlite3_stmt *pstmt=NULL;
        sqlite3_prepare16_v2(db,str,-1,&pstmt,NULL);
        sqlite3_step(pstmt);
        int nCount = sqlite3_column_int(pstmt,0);
        sqlite3_finalize(pstmt);

        return nCount;
    }

    int main()
    {

        wcout.imbue(std::locale("chs"));
    #define _SIZEBUF 2000*1024
    #define _QUERYITEMS L"select count(*) from stt"


        sqlite3 *db = NULL;
        TCHAR *errMsg = NULL;
        sqlite3_stmt *pstmt=NULL;
        TCHAR *psql = NULL;

    int nRet = -1,nRows=-1;
    nRet = sqlite3_open16(L"F:\my.db",&db);
    if (nRet)
    {
        wcout<<L"无法打开sqlite数据库:"<<sqlite3_errmsg16(db)<<endl;
        sqlite3_close(db);
        cin.get();

        return 1;
    }
    else
    {
        wcout<<L"成功打开my.db"<<endl;

    }

    sqlite3_exec(db,"create table if not exists stt(id nchar(20) primary key,name nchar(20));insert into stt values('1','zhang');insert into stt values('2','li');",NULL,NULL,NULL);

    cout<<"表里面的项目数为:"<<GetItemCount(db,_QUERYITEMS)<<endl;

    //删除or插入

    //psql=L"delete from stt where id='4';";
    //sqlite3_prepare16_v2(db,psql,-1,&pstmt,NULL);
    //sqlite3_step(pstmt);
    //sqlite3_finalize(pstmt);
    //cout<<"表里面的项目数为:"<<GetItemCount(db,_QUERYITEMS)<<endl;


    //psql=L"insert or replace into stt where id='4';";
    //sqlite3_prepare16_v2(db,psql,-1,&pstmt,NULL);
    //sqlite3_step(pstmt);
    //sqlite3_finalize(pstmt);
    //cout<<"表里面的项目数为:"<<GetItemCount(db,_QUERYITEMS)<<endl;

    //更新

    psql = L"update st set name='zhang123' where id=3";
    sqlite3_prepare16(db,psql,_tcslen(psql)*sizeof(TCHAR),&pstmt,NULL);
    nRet = sqlite3_step(pstmt);
    switch (nRet)
    {
    case SQLITE_DONE:
        cout<<"SQLITE_DONE"<<endl;break;//注意,未找到或者已经遍历到结果集末尾的话,返回SQLITE_DONE
    case SQLITE_ROW:
        cout<<"SQLITE_ROW"<<endl;break;//若找到(甚至一个),则返回sqlite_row
    case SQLITE_ERROR:
        cout<<"SQLITE_ERROR"<<endl;break;
    default:
        cout<<"Unknown"<<endl;break;
    }
    //sqlite3_finalize(pstmt);
    int nAffected = sqlite3_changes(db);
    cout<<"受影响的行数为:"<<nAffected<<endl;
    sqlite3_reset(pstmt);

    sqlite3_close(db);
    cin.get();
    return 1;


    }

  • 相关阅读:
    开源数据访问组件Smark.Data 1.8
    .NET应用加载容器KGlue
    TCP&UDP压力测试工具
    使用Beetle.Express简单构建高吞吐的TCP&UDP应用
    通过分析内存来优化.NET程序
    winsock I/O模型
    C++各大有名库的介绍
    深入研究 STL Deque 容器An InDepth Study of the STL Deque Container (By Nitron)
    C C++编程子资料库(小程序)
    VSS服务器安装配置(比较完整的一篇VSS服务器配置的文章)
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/3669340.html
Copyright © 2011-2022 走看看