sqlite3基础 (Qt版本)

39 篇文章 0 订阅
初始化sqlite3 (创建表)
   QString url = QDir::currentPath() + QString::fromLocal8Bit("/Msg.db");
    bool isExsiting = false;
    QFileInfo file(url);
    if (!file.absoluteDir().exists())
    {
        QDir dir;
        dir.mkpath(file.path());
    }
    if (file.exists())
        isExsiting = true;
    if(SQLITE_OK != sqlite3_open(url.toStdString().c_str(), &m_conn))
    {
        sqlite3_close(m_conn);
    }
    if (!isExsiting)
    {
        char *zErrMsg= 0;

        char *sql= "CREATE TABLE [netmsg](\n [currentuser] [VARCHAR(50)],\n [msgType] int,\n [peername] [VARCHAR(40)],\n [peerNickname] [VARCHAR(40)],\n [msg] TEXT,\n [other_info] TEXT, [group_name]  [VARCHAR(40)],\n [send_timestamp] TEXT, \n [bExtract] int);";
        sqlite3_exec(m_conn, sql, 0, 0, &zErrMsg);
    }
 
插入数据:
        sprintf_s(sql, 1024, "INSERT INTO [netmsg] VALUES('%s','%d','%s','%s','%s','%s','%s','%s','%d');",
                  m_user_name.c_str(),msg.msgType,msg.peername.c_str(),msg.peerNickname.c_str(),
                  msg.msg.c_str(),msg.other_info.c_str(),msg.group_name.c_str(),msg.send_timestamp.c_str(),flag);
        m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
        if(m_rc != SQLITE_OK)
        {
            return;
        }

        sqlite3_step(m_stmt);
        sqlite3_finalize(m_stmt);

 

读取数据:

char    sql[1024];
    sprintf_s(sql, 1024,
              "SELECT * FROM [netmsg] WHERE [peername] == '%s' and [msgType] == '%d';"
              ,peerName.c_str(),PUSH_USER_CHAT_MESSAGE_);

    m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
    if(m_rc)
    {
        return;
    }

    while(sqlite3_step(m_stmt) == SQLITE_ROW)
    {
        ComingMsg  msg;

        msg.msgType = sqlite3_column_int(m_stmt, 1);
        msg.peername = (char*)sqlite3_column_text(m_stmt, 2);
        msg.peerNickname = (char*)sqlite3_column_text(m_stmt, 3);
        msg.msg = (char*)sqlite3_column_text(m_stmt, 4);
        msg.other_info = (char*)sqlite3_column_text(m_stmt, 5);
        msg.send_timestamp = (char*)sqlite3_column_text(m_stmt, 7);

        if ( sqlite3_column_int(m_stmt, 8) == 0)
        {
            msg.bExtract = false;
        }
        else
        {
            msg.bExtract = true;
        }
        msgVec.push_back(msg);
    }

    sqlite3_finalize(m_stmt);

 

删除数据:

        sprintf_s(sql, 1024, "DELETE FROM [netmsg] WHERE [peername] == '%s' and [msgType] == '%d';",
                  peerName.c_str(),PUSH_USER_CHAT_MESSAGE_);

        m_rc = sqlite3_prepare_v2(m_conn, sql, strlen(sql), &m_stmt, 0);
        if(m_rc != SQLITE_OK)
        {

            return;
        }

        sqlite3_step(m_stmt);
        sqlite3_finalize(m_stmt);

sqlite3第一次用,简单地把自己的使用过程写一下,以后再用到可以参考。

sqlite3对很多通过的SQL语句都支持,像SELECT,UPDATE,INSERT,DELETE等等都支持地很好,只要懂SQL语句就可以用sqlite3。


By 冬狼无敌  转载请注明出处:http://blog.csdn.net/superzhaifd/article/details/13583507


 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值