标题: VC操作sqlite的总结 [打印本页]

作者: liumei    时间: 2014-5-7 03:19
标题: VC操作sqlite的总结
新建一个MFC工程,将sqlite3.h和sqlite3.lib文件放到该工程的路径中,将sqlite3.dll文件放到debug文件夹中。接下来就是编码工作。

首先,不能忘了下面两行:

#include "sqlite3.h"

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

然后,就是各种基础操作了:

void CVcsqliteDlg::OnButton1()

{

         sqlite3 *db=NULL;

    char *errMsg = NULL;

    int rc;

    CString strtemp;



    //连接数据库

         //若没有则建一个数据库

    rc = sqlite3_open("myfirstdb.db", &db);

    if( rc )

         {

                  strtemp.Format("Can't open database: %s\n", sqlite3_errmsg(db));

        sqlite3_close(db);

         }

         else

         {

                  strtemp="open db ok!";

                  Beep(100,50);

         }

    m_list.InsertString(0,strtemp);

         //建一个表

    rc = sqlite3_exec(db, "CREATE TABLE students(number varchar(10), name varchar(10),sex varchar(6), age varchar(2));", NULL, NULL, NULL);

    if (0!= rc)  

     {   

         strtemp.Format("CREATE Error:%s",errMsg);

     }

          else   

     {   

                   strtemp="CREATE OK";

     }

          m_list.InsertString(0,strtemp);

         //插入

    rc = sqlite3_exec(db, "INSERT INTO \"students\" VALUES('567','cd','ef','gh');",0,0,&errMsg);

     if (0!= rc)   

     {   

         strtemp.Format("Insert Error:%s",errMsg);

     }

          else   

     {   

                   strtemp="Insert OK";

     }

          m_list.InsertString(0,strtemp);

    //改

         rc=sqlite3_exec(db,"UPDATE students SET number='00',sex='male' WHERE age='gh';",0,0,&errMsg);

         if (0!=rc)

         {

                  strtemp.Format("Update Error:%s",errMsg);

         }

         else

         {

                  strtemp="Update OK";

         }

         m_list.InsertString(0,strtemp);

    //删

         rc=sqlite3_exec(db,"DELETE FROM students WHERE age='gh';",0,0,&errMsg);

         if (0!=rc)

         {

                  strtemp.Format("delete error:%s",errMsg);

         }

         else

         {

                  strtemp="delete ok";

         }

         m_list.InsertString(0,strtemp);

    //查

         int nrow = 0, ncolumn = 0;

    char **azResult; //二维数组存放結果

    CString sql="SELECT * FROM students";

    rc=sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &errMsg );

    if (0!=rc)

    {

                  strtemp.Format("query error:%s",errMsg);

    }

         else

         {

                  strtemp.Format("共%d行,共%d列,结果%s",nrow,ncolumn,azResult[5]);

         }

         m_list.InsertString(0,strtemp);



    //释放azResult 的內存空間

    sqlite3_free_table( azResult );

    //关闭数据库

         sqlite3_close(db)





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1