Sqlite China  
首页 | 各种语言的sqlite编程 |sqlite研究 | sqlite应用实例与杂谈 | sqlite相关下载 | SQlite论坛
当前位置 : 主页>各种语言的sqlite编程>列表
C/C++中调用SQLITE3的基本步骤
来源:工友 作者:工友 时间:2007-12-21

Sqlite 是一个面向嵌入式系统的数据库,编译完成只有200K,同时支持2T的数据记录。对于嵌入式设备是一个很好的数据库引擎。本文通过一个小例子说明如何在C 与C++调用Sqlite API完成数据库的创建、插入数据与查询数据。本文的开发环境为(Redhat9.0 + Qtopia2.1.2 + Sqlite3)

安装Sqlite3:

www.sqlite.org上下载Sqlite3.2.2运源代码,依照Readme中的步骤:

tar xzf sqlite3.2.2.tar.gz

mkdir bld

cd bld

../sqlite3.2.2/configure

make

make install

然后在shell下运行 sqlite3 test.db命令可以检验是否已经安装成功。

创建数据库:

 sqlite3 *pDB = NULL;
 char * errMsg = NULL;

 //打开一个数据库,如果改数据库不存在,则创建一个名字为databaseName的数据库文件
  int rc = sqlite3_open(databaseName, &pDB);

  if(rc)
  {
    cout << " Open the database " << databaseName << " failed" << endl;
  }

  //如果创建成功,添加表

  else
  {
    cout << "create the database successful!" << endl;

    //creat the table
    int i;
    for(i=1; i<nTableNum; i++)
    {
     
    }
    //插入一个表,返回值为SQLITE_OK为成功,否则输出出错信息

    //函数参数:第一个为操作数据库的指针,第二句为SQL命令字符串

    //第三个参数为callback函数,这里没有用,第四个参数为callback函数

    //中的第一个参数,第五个为出错信息

    rc = sqlite3_exec(pDB, "CREATE TABLE chn_to_eng(chinese QString, english QString)", 0, 0, &errMsg);

    if(rc == SQLITE_OK)
       cout << "create the chn_to_eng table successful!" << endl;
    else
       cout << errMsg << endl;

    //同上,插入另一个表

    rc = sqlite3_exec(pDB, "CREATE TABLE eng_to_chn(english QString, chinese QString)", 0, 0, &errMsg);

    if(rc == SQLITE_OK)
        cout << "create the eng_to_chn table successful!" << endl;
    else
       cout << errMsg << endl;
   
  }

  、、、、、、

  //往表中添加数据

  char chn[]="...";

  char eng[]="...";

  char value[500];
  //定义一条参数SQL命令,其中chn,eng为需要插入的数据    
  sprintf(value, "INSERT INTO chn_to_eng(chinese, english) VALUES('%s', '%s')", chn, eng);
  
  //use the SQLITE C/C++ API to create and adjust a database.
  rc = sqlite3_exec(pDB,
                       value,
                      0, 0, &errMsg);

 //查询一条记录

 char value[500];

 //定义一条查询语句,其中条件为当english为target时的中文记录

 //print_result_cb为callback函数,在其中可以得到查询的结果,具体见下文
 sprintf(value, "SELECT chinese FROM eng_to_chn where english='%s' ", target);

  rc = sqlite3_exec(pDB,
                      value,
                      print_result_cb, 0, &errMsg);

  if(rc == SQLITE_OK)
      {
//        #ifdef_debug
           cout << "select the record successful!" << endl;
//        #endif
      }
      else
      {
//        #ifdef_debug
          cout << errMsg << endl; 
//        #endif                           
          return false;
      }

.......

}

//callback回调函数print_result_cb的编写,其中data为sqlite3_exec中的第四个参数,第二个参数是栏的数目,第三个是栏的名字,第四个为查询得到的值得。这两个函数输出所有查询到的结果

int print_result_cb(void* data, int n_columns, char** column_values,
                    char** column_names)
{
    static int column_names_printed = 0;
    int i;
    if (!column_names_printed) {
        print_row(n_columns, column_names);
        column_names_printed = 1;
    }

    print_row(n_columns, column_values);
    return 0;
}


void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



  char value[500];
  //定义一条参数SQL命令,其中chn,eng为需要插入的数据    
  sprintf(value, "INSERT INTO chn_to_eng(chinese, english) VALUES('%s', '%s')", chn, eng);
  
  //use the SQLITE C/C++ API to create and adjust a database.
  rc = sqlite3_exec(pDB,
                       value,
                      0, 0, &errMsg);

 //查询一条记录

 char value[500];

 //定义一条查询语句,其中条件为当english为target时的中文记录

 //print_result_cb为callback函数,在其中可以得到查询的结果,具体见下文
 sprintf(value, "SELECT chinese FROM eng_to_chn where english='%s' ", target);

  rc = sqlite3_exec(pDB,
                      value,
                      print_result_cb, 0, &errMsg);

  if(rc == SQLITE_OK)
      {
//        #ifdef_debug
           cout << "select the record successful!" << endl;
//        #endif
      }
      else
      {
//        #ifdef_debug
          cout << errMsg << endl; 
//        #endif                           
          return false;
      }

.......

}

//callback回调函数print_result_cb的编写,其中data为sqlite3_exec中的第四个参数,第二个参数是栏的数目,第三个是栏的名字,第四个为查询得到的值得。这两个函数输出所有查询到的结果

int print_result_cb(void* data, int n_columns, char** column_values,
                    char** column_names)
{
    static int column_names_printed = 0;
    int i;
    if (!column_names_printed) {
        print_row(n_columns, column_names);
        column_names_printed = 1;
    }

    print_row(n_columns, column_values);
    return 0;
}


void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



  char value[500];
  //定义一条参数SQL命令,其中chn,eng为需要插入的数据    
  sprintf(value, "INSERT INTO chn_to_eng(chinese, english) VALUES('%s', '%s')", chn, eng);
  
  //use the SQLITE C/C++ API to create and adjust a database.
  rc = sqlite3_exec(pDB,
                       value,
                      0, 0, &errMsg);

 //查询一条记录

 char value[500];

 //定义一条查询语句,其中条件为当english为target时的中文记录

 //print_result_cb为callback函数,在其中可以得到查询的结果,具体见下文
 sprintf(value, "SELECT chinese FROM eng_to_chn where english='%s' ", target);

  rc = sqlite3_exec(pDB,
                      value,
                      print_result_cb, 0, &errMsg);

  if(rc == SQLITE_OK)
      {
//        #ifdef_debug
           cout << "select the record successful!" << endl;
//        #endif
      }
      else
      {
//        #ifdef_debug
          cout << errMsg << endl; 
//        #endif                           
          return false;
      }

.......

}

//callback回调函数print_result_cb的编写,其中data为sqlite3_exec中的第四个参数,第二个参数是栏的数目,第三个是栏的名字,第四个为查询得到的值得。这两个函数输出所有查询到的结果

int print_result_cb(void* data, int n_columns, char** column_values,
                    char** column_names)
{
    static int column_names_printed = 0;
    int i;
    if (!column_names_printed) {
        print_row(n_columns, column_names);
        column_names_printed = 1;
    }

    print_row(n_columns, column_values);
    return 0;
}


void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org



void print_row(int n_values, char** values)
{
    int i;
    for (i = 0; i < n_values; ++i) {
        if (i > 0) {
            printf("\t");
        }

        printf("%s", values[i]);
       
    }
    printf("\n");
}

大致过程就是如此,具体可以参考SQLITE的API函数说明,见
www.sqlite.org

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=446048

(阅读次数:
上一篇:python模块之sqlite数据库 下一篇:SQL 语法手册
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
§最新评论
热点文章
·简单的在Java中使用SQLite
·C/C++中调用SQLITE3的基本
·PHP+SQLITE制作简单的视频
·DISQLite3 简介 SQLite de
·VB.NET 中使用 SQLite3 的
·SQLiteJDBC 100%纯JAVA的s
·如何在Windows下编译SQLit
·关于SQLite的一些简单介绍
·在VC6.0中使用C++访问sqli
·C/C++中调用SQLITE3的基本
·SQLite 与 PHP 结合开发(
·在VC6.0中使用C++访问sqli
·使用SQLite进行网站搜索
·SQLite ADO.NET 驱动(C#
·在.NET C#中使用sqlite
·python模块之sqlite数据库
·PHP中的SQlite数据库应用
·如何在PHP5中通过PDO连接S
·PHP中如何使用sqlite_crea
·SQLite 、 PHP混合扩展编
相关文章
·让你的PHP4也用上Sqlite3
·VB.NET 中使用 SQLite3 的
·C/C++中调用SQLITE3的基本
·python模块之sqlite数据库
·在.NET C#中使用sqlite
·用Ruby进行SQLite的开发指
·PHP5中的 sqlite_create_f
·SQLite ADO.NET 驱动(C#
·使用SQLite进行网站搜索
·如何在Windows下编译SQLit

版权Power by DedeCms   后台登陆
Copyright @ 2007