注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

C操作sqlite的demo  

2013-02-18 21:51:06|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include<stdio.h>
#include<sqlite3.h>
#include<stdlib.h>

int main(int argc, char** args)
{
    // Create an int variable for storing the return code for each call
    int retval;
   
    // The number of queries to be handled,size of each query and pointer
    int q_cnt = 5,q_size = 150,ind = 0;
    char **queries = malloc(sizeof(char) * q_cnt * q_size);
       
    // A prepered statement for fetching tables
    sqlite3_stmt *stmt;
   
    // Create a handle for database connection, create a pointer to sqlite3
    sqlite3 *handle;
   
    // try to create the database. If it doesnt exist, it would be created
    // pass a pointer to the pointer to sqlite3, in short sqlite3**
    retval = sqlite3_open("sampledb.sqlite3",&handle);
    // If connection failed, handle returns NULL
    if(retval)
    {
        printf("Database connection failed\n");
        return -1;
    }
    printf("Connection successful\n");
   
    // Create the SQL query for creating a table
    char create_table[100] = "CREATE TABLE IF NOT EXISTS users (uname TEXT PRIMARY KEY,pass TEXT NOT NULL,activated INTEGER)";
   
    // Execute the query for creating the table
    retval = sqlite3_exec(handle,create_table,0,0,0);
   
    // Insert first row and second row
    queries[ind++] = "INSERT INTO users VALUES('manish','mani',1)";
    retval = sqlite3_exec(handle,queries[ind-1],0,0,0);
    queries[ind++] = "INSERT INTO users VALUES('mehul','pulsar',0)";
    retval = sqlite3_exec(handle,queries[ind-1],0,0,0);
   
    // select those rows from the table
    queries[ind++] = "SELECT * from users";
    retval = sqlite3_prepare_v2(handle,queries[ind-1],-1,&stmt,0);
    if(retval)
    {
        printf("Selecting data from DB Failed\n");
        return -1;
    }
   
    // Read the number of rows fetched
    int cols = sqlite3_column_count(stmt);
       
    while(1)
    {
        // fetch a row's status
        retval = sqlite3_step(stmt);
       
        if(retval == SQLITE_ROW)
        {
            // SQLITE_ROW means fetched a row
           
            // sqlite3_column_text returns a const void* , typecast it to const char*
            for(int col=0 ; col<cols;col++)
            {
                const char *val = (const char*)sqlite3_column_text(stmt,col);
                printf("%s = %s\t",sqlite3_column_name(stmt,col),val);
            }
            printf("\n");
        }
        else if(retval == SQLITE_DONE)
        {
            // All rows finished
            printf("All rows fetched\n");
            break;
        }
        else
        {
            // Some error encountered
            printf("Some error encountered\n");
            return -1;
        }
    }
   
    // Close the handle to free memory
    sqlite3_close(handle);
    return 0;

Save the code in a file named, say dataman.c , compile it using the command

$ gcc dataman.c -o dataman -l sqlite –std=c99



SQLite 下载与SQLite.lib生成

一、SQLite下载 SQLite可以在SQLite 官网http://www.sqlite.org/download.html下载 sqlite-dll-win32-x86-3070600.zip或CSDN官网http://download.csdn.net/source/3269692下载 sqlite-dll-win32-x86-3070600.zip(这个时候发现压缩包里只有dll和def文件。)

二、SQLite.lib生成

1、 将sqlite-dll-win32-x86-3070600.zip 下载到自己的本地电脑上以后,(假设存储地址:E:/test,在该目录下放入文sqlite3.def);

2、 打开LIB.EXE所在的目录,VC6.0下的LIB.EXE一般都存放在C:/Program Files/Microsoft Visual Studio/VC98/Bin下;

3、 打开“运行”—>”cmd”进入DOS下,使用CD 更改到LIB.EXE所在的当前路径,如:cd C:/Program Files/Microsoft Visual Studio/VC98/Bin

4、 在DOS下输入LIB /out:E:/test/sqlite3.lib /MACHINE:IX86 /DEF:E:/test/sqlite3.def 5、 回车之后,打开E:/test文件就会发现多了两个文件sqlite3.lib和sqlite3.exp。

 

 

过程中可能遇到的问题:

mspdb80.dll无法找到

在cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况,是因为VC/Bin/下没有“msobj80.dll,mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法:

1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决
2>添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;,注意结尾最后用“;”隔开!
这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。


-----------------------------------------

想将sqlite3加入到我的项目中来,但是根据源代码生成sqlite3.dll和sqlite3.lib太麻烦!幸好VC下提供Lib工具,可以根据dll和def文件生成lib文件。具体过程如下:

1)进入VC2005所带的DOS环境下。

2)通过cd命令进入sqlite3.dll和sqlite3.def所在的文件夹。

3)通过下面的命令生成sqlite3.lib。

LIB /MACHINE:IX86 /DEF:sqlite3.def

通过以上步骤即可生成sqlite3.lib文件了!

  评论这张
 
阅读(917)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016