﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Thinker IN JAVA-随笔分类-C语言与CGI CGIC Sqlite3</title><link>http://www.blogjava.net/Supershen/category/29824.html</link><description>Java  JavaEE  Jsp  Struts1.x Struts2.x  Hibernate Spring2.0 EJB3.0   ASP   .NET   Php   Flex ----  一个都不能少!  &lt;br&gt;  留着，希望帮助到更多需要的人。</description><language>zh-cn</language><lastBuildDate>Sat, 01 Mar 2008 12:16:59 GMT</lastBuildDate><pubDate>Sat, 01 Mar 2008 12:16:59 GMT</pubDate><ttl>60</ttl><item><title>第一个 CGIC sqlite3 代码</title><link>http://www.blogjava.net/Supershen/archive/2008/03/01/183156.html</link><dc:creator>Super·shen BLOG  李禄燊 </dc:creator><author>Super·shen BLOG  李禄燊 </author><pubDate>Sat, 01 Mar 2008 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/Supershen/archive/2008/03/01/183156.html</guid><wfw:comment>http://www.blogjava.net/Supershen/comments/183156.html</wfw:comment><comments>http://www.blogjava.net/Supershen/archive/2008/03/01/183156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Supershen/comments/commentRss/183156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Supershen/services/trackbacks/183156.html</trackback:ping><description><![CDATA[提交页面

<html>
<body onbeforeunload="RunOnBeforeUnload()">
<h1>插入</h1>
<form action="cgi-bin/add2.cgi" method="get">
用户:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type=submit value=插入> 
</form>
</body>
</html>



处理页面add2.cgi 代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "sqlite3.h"
#include "cgic.h"

int cgiMain() {
printf("Content-type:text/html\n\n");
printf("<head><meta http-equiv=\"Expires\" CONTENT=\"0\"><meta http-equiv=\"Cache-Control\" CONTENT=\"no-cache\"><meta http-equiv=\"Pragma\" CONTENT=\"no-cache\"></head>");

sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if(rc){
printf("Can't open database\n"); //这里改了。要是按原先的，会提示stderr未定义，我不知道为什么。哪位朋友知道一定要告诉我哦。
sqlite3_close(db);
exit(1);
}
else printf("open test.db successfully!\n");


char username[241];
cgiFormString("username", username, 241);
fprintf(cgiOut, "username: <PRE>\n");
cgiHtmlEscape(username);
fprintf(cgiOut, "</pre>\n");

char password[241];
cgiFormString("password", password, 241);
fprintf(cgiOut, "password: <PRE>\n");
cgiHtmlEscape(password);
fprintf(cgiOut, "</pre>\n");



char sql[300]={'\0'};  //不能用指针!

//插入数据 

sprintf(sql, "INSERT INTO \"user\" VALUES('%s', '%s');", username,password);
//sql = "INSERT INTO \"user\" VALUES('username', 'password');" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

printf(sql);
printf("插入数据成功!\n"); 


int nrow = 0, ncolumn = 0;
char **azResult; //二维数组存放结果

//查询数据
/*
int sqlite3_get_table(sqlite3*, const char *sql,char***result , int *nrow , int *ncolumn ,char **errmsg );
result中是以数组的形式存放你所查询的数据，首先是表名，再是数据。
nrow ,ncolumn分别为查询语句返回的结果集的行数，列数，没有查到结果时返回0
*/
char *sql2 = "SELECT * FROM user";
sqlite3_get_table( db , sql2 , &azResult , &nrow , &ncolumn , &zErrMsg );

int i = 0 ;
printf( "row:%d column=%d <br>" , nrow , ncolumn );
printf( "\nThe result of querying is : \n" );

for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s <br>", i , azResult[i] );

//释放掉 azResult 的内存空间
sqlite3_free_table( azResult );


sqlite3_close(db); //关闭数据库
return 0;
}



请注意数据库文件 test.db的访问权限! 这里改成777! <img src ="http://www.blogjava.net/Supershen/aggbug/183156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Supershen/" target="_blank">Super·shen BLOG  李禄燊 </a> 2008-03-01 17:11 <a href="http://www.blogjava.net/Supershen/archive/2008/03/01/183156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CGIC简明教程</title><link>http://www.blogjava.net/Supershen/archive/2008/02/28/182683.html</link><dc:creator>Super·shen BLOG  李禄燊 </dc:creator><author>Super·shen BLOG  李禄燊 </author><pubDate>Thu, 28 Feb 2008 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/Supershen/archive/2008/02/28/182683.html</guid><wfw:comment>http://www.blogjava.net/Supershen/comments/182683.html</wfw:comment><comments>http://www.blogjava.net/Supershen/archive/2008/02/28/182683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Supershen/comments/commentRss/182683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Supershen/services/trackbacks/182683.html</trackback:ping><description><![CDATA[<p>[转自] http://webdn.trueself.cn/archives/107</p>
<img src ="http://www.blogjava.net/Supershen/aggbug/182683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Supershen/" target="_blank">Super·shen BLOG  李禄燊 </a> 2008-02-28 14:19 <a href="http://www.blogjava.net/Supershen/archive/2008/02/28/182683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>