C++读写数据库
官网下载地址:https://www.sqlite.org/download.html
1、 下载sqlite文件
SQLite版本为SQLite 3.39.0,相关文件如下。
sqlite-dll-win64-x64-3390000.zip:包含sqlite3.def、sqlite3.dll文件。
sqlite-amalgamation-3390000.zip:包含sqlite3.h 文件。
2、 生成sqlite3.lib
- sqlite-dll-win64-x64-3390000.zip文件解压到D:\ sqlite。
- 运行Visual Studio 2019 lib命令行程序。
- 依次执行控制台命令。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cd /d D:\ProgramFiles\sqlite-dll-win64-x64-3390000
D:\ProgramFiles\sqlite-dll-win64-x64-3390000>lib.exe /def:sqlite3.def /machine:ix64
Microsoft (R) Library Manager Version 14.29.30133.0
Copyright (C) Microsoft Corporation. All rights reserved.
LINK : warning LNK4012: 值“ix64”无效,必须是“ARM, ARM64, ARM64X, EBC, X64, or X86”;已忽略选项
LINK : warning LNK4068: 未指定 /MACHINE;默认设置为 X64
正在创建库 sqlite3.lib 和对象 sqlite3.exp
D:\ProgramFiles\sqlite-dll-win64-x64-3390000>lib.exe /def:sqlite3.def /machine:X64
Microsoft (R) Library Manager Version 14.29.30133.0
Copyright (C) Microsoft Corporation. All rights reserved.
正在创建库 sqlite3.lib 和对象 sqlite3.exp
即可生成sqlite3.lib文件。
参考:SQLite - C/C++
参考:C/C++使用SQLite步骤及示例
3、测试程序
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
//int main(int argc, char* argv[])
//{
// sqlite3* db;
// char* zErrMsg = 0;
// int rc;
//
// rc = sqlite3_open("test.db", &db);
//
// if (rc) {
// fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
// exit(0);
// }
// else {
// fprintf(stderr, "Opened database successfully\n");
// }
// sqlite3_close(db);
//}
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
int i;
for (i = 0; i < argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char* argv[])
{
sqlite3* db;
char* zErrMsg = 0;
int rc;
char* sql;
/* Open database */
rc = sqlite3_open("test.db", &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
exit(0);
}
else {
fprintf(stdout, "Opened database successfully\n");
}
/* Create SQL statement */
sql = "CREATE TABLE COMPANY(" \
"ID INT PRIMARY KEY NOT NULL," \
"NAME TEXT NOT NULL," \
"AGE INT NOT NULL," \
"ADDRESS CHAR(50)," \
"SALARY REAL );";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else {
fprintf(stdout, "Table created successfully\n");
}
sqlite3_close(db);
return 0;
}