zoukankan      html  css  js  c++  java
  • Sqlite的操作(增加,删除,查询,修改)

    int OpenDB(sqlite3** db)
    {
      int result = sqlite3_open(DBNAME,db);
      #ifdef DEBUG
      if(result!=0)
      {
        printf("Open DataBase Fail ,Result Code:%d \n",result);
      }
      else
      {
        printf("Open DataBase Sucess\n");
      }
      #endif
      return result;
    }
    int CloseDB(sqlite3* db)
    {
      int result =  sqlite3_close(db);
      #ifdef DEBUG
      if(result!=0)
      {
        printf("Close DataBase fail,ResultCode:%d \n",result);
      }
      else
      {
        printf("Close DataBase Success\n");
      }
      #endif
      return result;
    }
     
    创建表:
     
     
    
    //创建表操作
    void CreateTable()
    {
      sqlite3 *db;
      sqlite3_stmt *stmt = NULL;
      char * ErrMessage = NULL;
      const char * Error = NULL;
      char * str_CreateTable="Create Table Student ( studentID INTEGER,studentName Text,HeadImage Blob)"; //创建表的SQL语句
      int rc =0;
      if(OpenDB(&db)!=SQLITE_OK)
      {    
        return;
      }
      rc = sqlite3_exec(db,str_CreateTable,0,0,&ErrMessage); //执行
      if(rc!=SQLITE_OK)
      {
        printf("操作数据库失败!ErrorMessge:%s\n",ErrMessage);
        return;
      }
      sqlite3_finalize(stmt);
      CloseDB(db);
    }
    
    Insert操作
    //Insert操作
    void InsertOperation(void)
    {
      sqlite3 *db;
      sqlite3_stmt *stmt = NULL;
      char * ErrMessage = NULL;
      const char * Error = NULL;
      char * str_Insert="Insert Into Student ( [studentID] ,[studentName],[HeadImage]) values(1,'Alex',?)"; //SQL语句
      int rc =0;
      if(OpenDB(&db)!=SQLITE_OK)
      {    
        return;
      }
        
      rc = sqlite3_prepare(db,str_Insert,-1,&stmt,&Error);
      if(rc!=SQLITE_OK)
      {
        printf("准备执行插入语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error);
        return;
      }
      char _headImage[3] = {0x41,0x42,0x43};
        
      sqlite3_bind_blob(stmt,1,&_headImage,3,NULL);   //二进制数据
      rc = sqlite3_step(stmt);
      if(rc!=SQLITE_DONE)
      {
        printf("插入失败!Result Code:%d  ErrorMessage:%s",rc,Error);
        return;
      }
      printf("插入成功!\n");
    CloseDB(db);
    }
     
    Update操作:
    //Insert操作
    void InsertOperation(void)
    {
      sqlite3 *db;
      sqlite3_stmt *stmt = NULL;
      char * ErrMessage = NULL;
      const char * Error = NULL;
      char * str_Insert="Insert Into Student ( [studentID] ,[studentName],[HeadImage]) values(1,'Alex',?)"; //SQL语句
      int rc =0;
      if(OpenDB(&db)!=SQLITE_OK)
      {    
        return;
      }
        
      rc = sqlite3_prepare(db,str_Insert,-1,&stmt,&Error);
      if(rc!=SQLITE_OK)
      {
        printf("准备执行插入语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error);
        return;
      }
      char _headImage[3] = {0x41,0x42,0x43};
        
      sqlite3_bind_blob(stmt,1,&_headImage,3,NULL);   //二进制数据
      rc = sqlite3_step(stmt);
      if(rc!=SQLITE_DONE)
      {
        printf("插入失败!Result Code:%d  ErrorMessage:%s",rc,Error);
        return;
      }
      printf("插入成功!\n");
    CloseDB(db);
    }
    Delete操作:
    void DeleteOperation(void)
    {
      sqlite3 *db;
      sqlite3_stmt *stmt = NULL;
      char * ErrMessage = NULL;
      const char * Error = NULL;
      char * str_Update="Delete From Student  where [studentID] =1"; //SQL语句
      int rc =0;
      if(OpenDB(&db)!=SQLITE_OK)
      {    
        return;
      }
        
      rc = sqlite3_prepare(db,str_Update,-1,&stmt,&Error);
      if(rc!=SQLITE_OK)
      {
        printf("准备执行删除语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error);
        return;
      }
      rc = sqlite3_step(stmt);
      if(rc!=SQLITE_DONE)
      {
        printf("删除失败!Result Code:%d  ErrorMessage:%s",rc,Error);
        return;
      }
      printf("删除成功!\n");
    CloseDB(db);
    }
    Select操作:
    void SelectOperation(void)
    {
       sqlite3 *db;
      sqlite3_stmt *stmt = NULL;
      char * ErrMessage = NULL;
      const char * Error = NULL;
      char * str_Update="select * From Student "; //SQL语句
      int rc =0;
      if(OpenDB(&db)!=SQLITE_OK)
      {    
        return;
      }
        
      rc = sqlite3_prepare(db,str_Update,-1,&stmt,&Error);
      if(rc!=SQLITE_OK)
      {
        printf("准备执行查询语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error);
        return;
      }
      while(1)
      {
        if(sqlite3_step(stmt)!=SQLITE_ROW)
        {
          sqlite3_finalize(stmt);
          break;
        }
       int studentid =sqlite3_column_int(stmt,0);
       const char * studentName = sqlite3_column_text(stmt,1);
       const void * image = sqlite3_column_blob(stmt,2);
       printf("studentID is %d ,Name is %s,HeadImage is %s \n",studentid,studentName,image);
      }
      CloseDB(db);
    }


  • 相关阅读:
    2018年左其盛读过评过的书(持续更新中)
    2星|《用场景营销引爆你的生意》:总共4个推荐案例,3个已经失败
    2018左其盛经管新书差评榜(持续更新中)
    3星|《十大全球CEO亲授企业高速成长的关键战略》:作为CEO,我也非常坦率地表明过家庭优先于工作
    2018左其盛好书榜(持续更新中)
    3星|《你的品牌需要一个讲故事的人》:有理论没案例
    《思考快与慢》前传,两位天才犹太心理学家的传奇人生与学术故事:4星|《思维的发现》
    C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
    在XML里的XSD和DTD以及standalone的使用
    数据库操作之简单带参操作
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835200.html
Copyright © 2011-2022 走看看