【问题描述】利用C编写CGI程序,如何控制SQLite3,进行基本的数据库操作?【简介】需要建立的变量
- sqlite3 *db;
- int nrow = 0, ncolumn = 0;
- char **azResult = NULL;
- char *zErrMsg = 0;
-
- char sql[500];
- int rc = 0;
需要包含的头文件
- #include <sqlite3.h>
备注:详见搭建SQLite3嵌入式开发环境 (http://www.linuxidc.com/Linux/2011-10/44239.htm),安装后,会产生一个sqlite3.h的文件。1 打开数据库(open)
- rc = sqlite3_open("test.db", &db);
- if (rc)
- {
- printf("Content-type: text/html
");
- fprintf(stderr, "Can"t open database: %s
", sqlite3_errmsg(db));
- sqlite3_close(db);
- return sql_errror();
- }
其中,sql_error()是自定义的函数。
2 关闭数据库(close)
- sqlite3_close(db);
3 查(select)
- sprintf(sql,
- "select * from user where name="%s" AND passwd="%s"",
- username, passwd);
-
- rc = sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
- if (rc != SQLITE_OK)
- {
- printf("Content-type: text/html
");
- fprintf(stderr, "SQL error: %s
", zErrMsg);
- sqlite3_close(db);
- return sql_errror();
- }
-
- if(*azResult != NULL)
- {
- printf("Content-type: text/html
");
- int i;
- for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
- printf( "azResult[%d] = %s
", i , azResult[i] );
- ...
- }
查询的结果保存在**azResult中,为nrow x ncolumn数组。4 增(insert)
- sprintf(sql,
- "insert into user(name,passwd) values("%s","%s")",
- username,passwd);
-
- rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
- if (rc != SQLITE_OK)
- {
- fprintf(stderr, "SQL1 error: %s
", zErrMsg);
- return 1;
- }
回调函数(callback)
- static int callback(void *NotUsed, int argc, char **argv, char **azColName)
- {
- int i = 0;
-
- printf("Content-type: text/html
");
- for (i=0; i<argc; i++)
- {
- printf("%s = %s
", azColName[i], argv[i] ? argv[i] : "NULL");
- }
-
- printf("
");
- return 0;
- }
Oracle教程:CASE语句与CASE表达式解决MySQL server has gone away相关资讯 C语言 SQLite3
- 最受欢迎编程语言又是谁?C语言居 (今 08:08)
- C语言背后的运行机制 (03月06日)
- SQLite3简单操作 (01月29日)
| - C是2016年最流行语言 (07月28日)
- 轻松学C语言(图解版)高清晰扫描 (02月25日)
- C语言打印各种图形 (12/29/2015 22:06:28)
|
本文评论 查看全部评论 (0)