<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[C语言程序调用SQLite]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 04 Dec 2008 07:36:38 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	1.5 写个C语言程序调用SQLite<br/>&nbsp;&nbsp;&nbsp;&nbsp;现在我们来写个C/C++程序，调用 sqlite&nbsp;&nbsp;&nbsp;&nbsp;的 API 接口函数。<br/>&nbsp;&nbsp;&nbsp;&nbsp;下面是一个C程序的例子，显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由第一个参数取得且第二个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 22 行打开数据库, sqlite3_exec() 在 27 行执行 SQL 命令, 并且sqlite3_close() 在 31 行关闭数据库连接。<br/>代码:<br/><br/>//&nbsp;&nbsp;&nbsp;&nbsp; name： opendbsqlite.c<br/>//&nbsp;&nbsp;&nbsp;&nbsp;This file is used to test C/C++ API for sqlite<br/>//&nbsp;&nbsp;&nbsp;&nbsp; Author : zieckey<br/>//&nbsp;&nbsp;&nbsp;&nbsp; 2006/04/11<br/>#include <stdio.h><br/>#include <sqlite3.h><br/> <br/>int main( void )<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;sqlite3 *db=NULL;<br/>&nbsp;&nbsp;&nbsp;&nbsp;char *zErrMsg = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;int rc;<br/>&nbsp;&nbsp;&nbsp;&nbsp;rc = sqlite3_open("zieckey.db", &db);&nbsp;&nbsp; //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;if( rc )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, "Can't open database: %s&#92;n", sqlite3_errmsg(db));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlite3_close(db);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else printf("open zieckey.db successfully!&#92;n");<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;sqlite3_close(db);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;<br/><br/>编译：# gcc opendbsqlite.c -o db.out<br/>也许会碰到类似这样的问题：<br/>/tmp/ccTkItnN.o(.text+0x2b): In function `main':<br/>: undefined reference to `sqlite3_open'<br/>/tmp/ccTkItnN.o(.text+0x45): In function `main':<br/>: undefined reference to `sqlite3_errmsg'<br/>/tmp/ccTkItnN.o(.text+0x67): In function `main':<br/>: undefined reference to `sqlite3_close'<br/>/tmp/ccTkItnN.o(.text+0x8f): In function `main':<br/>: undefined reference to `sqlite3_close'<br/>collect2: ld returned 1 exit status<br/><br/>这是个没有找到库文件的问题。<br/>由于用到了用户自己的库文件,所用应该指明所用到的库，我们可以这样编译：<br/><br/># gcc opendbsqlite.c -o db.out -lsqlite3<br/><br/>我用用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等,<br/>去掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )。<br/>如果我们在编译安装的时候，选择了安装路径，例如这样的话：<br/>.......<br/># ../sqlite/configure --prefix=/usr/local/arm-linux/sqlite-ix86-linux<br/>.......<br/>这样编译安装时，sqlite的库文件将会生成在&nbsp;&nbsp;/usr/local/arm-linux/sqlite-ix86-linux/lib 目录下<br/>这时编译还要指定库文件路径，因为系统默认的路径没有包含 /usr/local/arm-linux/sqlite-ix86-linux/lib<br/><br/># gcc opendbsqlite.c -lsqlite3 -L/usr/local/arm-linux/sqlite-ix86-linux/lib<br/><br/>如果还不行的话，可能还需要指定头文件 sqlite3.h 的路径，如下：<br/><br/># gcc opendbsqlite.c -lsqlite3 -L/usr/local/arm-linux/sqlite-ix86-linux/lib -I/usr/local/arm-linux/sqlite-ix86-linux/include<br/><br/>这样编译应该就可以了 ，运行：<br/># ./db.out<br/>open zieckey.db successfully!<br/>是不是很有成就感阿 ，呵呵，这个上手还是很快的。 
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] C语言程序调用SQLite]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>