zoukankan      html  css  js  c++  java
  • VS2013 Sqlite3 操作指令

    1. extern "C"{  
    2. #include "sqlite3.h"  
    3. };  
    4.   
    5. #pragma comment(lib,"sqlite.lib")  
    6. /* 
    7. 为什么要 extern “C” ?这是C++的基础。要在 C++里使用一段 C 的代码,必须要用 extern “C” 括起来。C++跟 C虽然语法上有重叠,但是它们是两个不同的东西,内存里的布局是完全不同的,在C++编译器里不用extern “C”括起C代码,会导致编译器不知道该如何为 C 代码描述内存布局。可能在 sqlite3.c 里人家已经把整段代码都 extern “C” 括起来了,但是你遇到一个.c 文件就自觉的再括一次,也没什么不好。 
    8. */  
    9.   
    10. //-----------------------------------------------------OK,尽情的爽吧---------------------------------------------------//  
    11.   
    12. 下载是我简单作用sqlite3的代码,不好看,请包涵!  
    13.   
    14.  详细教程在这:http://download.csdn.net/detail/q775968375/5970059  
    15.   
    16. void CMySqliteDlg::OnBnClickedOk()  
    17. {  
    18.     // TODO: 在此添加控件通知处理程序代码  
    19.     //CDialogEx::OnOK();  
    20.     CTime m_time;  
    21.     m_time=CTime::GetCurrentTime();//获取当前时间日期    
    22.     FILE *fp=fopen("debug.txt","a+");  
    23.     fprintf(fp," ------------------------%s------------------------ "  
    24.         ,m_time.Format(_T("%Y-%m-%d %H:%M:%S %A")));  
    25.   
    26.     ::sqlite3 *db=NULL;  
    27.     ::sqlite3_stmt *stmt;  
    28.     char *sql=NULL,*error=NULL;  
    29.     const char *tail=NULL;  
    30.     int res;  
    31.     res=::sqlite3_open("MySqlite.db",&db);//打开数据库(不存在创建)  
    32.     if(res!=SQLITE_OK){  
    33.         ::sqlite3_close(db);  
    34.         fprintf(fp,"open database is failure:%s ",::sqlite3_errmsg(db));  
    35.         return;  
    36.     }else fprintf(fp,"open database is success! ");  
    37.   
    38.         //create table  
    39.         sql="create table if not exists MyTable(Row integer primary key autoincrement,Content text)";  
    40.         res=::sqlite3_exec(db,sql,NULL,NULL,&error);  
    41.         if(res!=SQLITE_OK){  
    42.           ::sqlite3_close(db);  
    43.           fprintf(fp,"error create table:%s %s ",error,::sqlite3_errmsg(db));  
    44.           return;  
    45.         }else fprintf(fp,"table is created ");  
    46.       
    47.   
    48.         //insert  
    49.         sql="insert or replace into MyTable(Row,Content) values(?,?)";  
    50.         //sqlite3_prepare_v2的作用是将UTF-8格式的SQL语句转换为编译后的语句,并返回指向该语句的指针    
    51.         res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);  
    52.         if(res!=SQLITE_OK){  
    53.           ::sqlite3_close(db);  
    54.           fprintf(fp,"insert is failure:%s %s ",tail,::sqlite3_errmsg(db));  
    55.           return;  
    56.         }  
    57.         for(int i=0;i<3;i++){  
    58.         //::sqlite3_bind_int(stmt,1,0);//1:id  2:data  
    59.         ::sqlite3_bind_text(stmt,2,"数据库数据",-1,NULL);  
    60.         if(::sqlite3_step(stmt)!=SQLITE_DONE){  
    61.             fprintf(fp,"error update table:%s ",::sqlite3_errmsg(db));  
    62.          }  
    63.         ::sqlite3_reset(stmt); //重新初始化该sqlite3_stmt对象绑定的变量。  
    64.         }  
    65.         ::sqlite3_finalize(stmt);  
    66.         //delete  
    67.         sql="delete from MyTable where Row=2";  
    68.         //res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);  
    69.         res=::sqlite3_exec(db,sql,NULL,NULL,&error);  
    70.         if(res!=SQLITE_OK){  
    71.           ::sqlite3_close(db);  
    72.           fprintf(fp,"delete error:%s %s ",error,::sqlite3_errmsg(db));  
    73.           return;  
    74.         }else fprintf(fp,"delete is success ");  
    75.         ::sqlite3_finalize(stmt);  
    76.         //update  
    77.         sql="update MyTable set Content='修改后的数据' where Row=3";  
    78.         res=::sqlite3_exec(db,sql,NULL,NULL,&error);  
    79.         if(res!=SQLITE_OK){  
    80.           ::sqlite3_close(db);  
    81.           fprintf(fp,"update error:%s %s ",error,::sqlite3_errmsg(db));  
    82.           return;  
    83.         }else fprintf(fp,"update is success ");  
    84.         ::sqlite3_finalize(stmt);  
    85.         //query  
    86.         sql="select Row,Content from MyTable order by Row";  
    87.         res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);  
    88.         if(res!=SQLITE_OK){  
    89.           ::sqlite3_close(db);  
    90.           fprintf(fp,"query is failure:%s %s ",tail,::sqlite3_errmsg(db));  
    91.           return;  
    92.         }  
    93.         while(::sqlite3_step(stmt)==SQLITE_ROW){  
    94.             static int cnt=::sqlite3_column_count(stmt);  
    95.             for(int i=0;i<cnt;i++){  
    96.                 fprintf(fp,"Data:%s ",::sqlite3_column_text(stmt,i));  
    97.             }  
    98.             /* 
    99.             int row=::sqlite3_column_int(stmt,0); 
    100.             char *rowData=(char*)::sqlite3_column_text(stmt,1); 
    101.             if(rowData==NULL)rowData="NULL"; 
    102.             */  
    103.         }  
    104.         //释放statement  
    105.         ::sqlite3_finalize(stmt);  
    106.         //关闭数据库  
    107.         ::sqlite3_close(db);  
    108.         ::fclose(fp);  
    109. }  
  • 相关阅读:
    树莓派安装aria2轻松下载小资源
    利用树莓派3搭建可以发射无线局域网的微型服务器
    Vue语法
    redis-cluster集群
    分布式锁
    Redis--消息队列
    设计模式---享元模式
    设计模式(单例模式+原型模式)+ c#的内存分配机制
    MVC的ActionFilter
    MVC异常处理的7大场景 + MVC的异常处理的过滤器 + 全局异常
  • 原文地址:https://www.cnblogs.com/ransn/p/8125330.html
Copyright © 2011-2022 走看看