#include "../SQLite3/sqlite3.h"
#include <iostream>
#include <tchar.h>
#include <windows.h>
#include <MMSystem.h>
#pragma comment(lib,"winmm.lib")
#define TEST_TIMES 10000
#define ONE_M 1048576
#define TEST_SELECT
//#define USE_TRANSACTION
typedef int(*sqlite3_callback)(void*,int,char**,char**);
char Name[4][32] = {"david","boluns","guanzhongdaoke","wangba"};
char Sex[2][8] = {"boy","girl"};
int SleectCB(void* para,int n_column,char** column_value,char** column_name )
{
printf("记录包含%d个字段\n", n_column );
for(int i = 0 ; i < n_column; i ++ )
{
printf("字段名:%s 字段值:%s\n", column_name[i], column_value[i] );
}
printf("------------------\n");
return 0;
}
int sqlite_main()
{
sqlite3 * db = 0;
int result = 0;
char * errmsg = 0;
#ifdef TEST_SELECT
remove("test.db");
result = sqlite3_open("test.db", &db );
if( result !=SQLITE_OK)
return -1;
result = sqlite3_exec( db,"create table Info( ID integer , name nvarchar(32) ,sex integer,age integer)", NULL, NULL, &errmsg ); /* primary key*/
if(result !=SQLITE_OK)
printf("创建表失败,错误码:%d,错误原因:%s\n", result, errmsg );
#ifdef USE_TRANSACTION
result = sqlite3_exec( db,"begin;", 0, 0, &errmsg );
#endif
char sSQL[128] = {0};
for (int i=0;i<TEST_TIMES;i++)
{
memset(sSQL,0,128);
sprintf(sSQL,"insert into Info values (%d,'%s','%s',%d)",i,Name[rand()%4],Sex[rand()%2],rand()%50+1);
result = sqlite3_exec( db,sSQL, 0, 0, &errmsg );
if(result !=SQLITE_OK)
printf("插入记录失败,错误码:%d,错误原因:%s\n", result, errmsg );
}
#ifdef USE_TRANSACTION
result = sqlite3_exec( db,"commit;", 0, 0, &errmsg );
#endif
#else
result = sqlite3_open("test.db", &db );
if( result !=SQLITE_OK)
return -1;
result = sqlite3_exec( db,"select * from Info", SleectCB, NULL, &errmsg );
#endif
sqlite3_close( db );
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwNow = timeGetTime();
sqlite_main();
printf("数据库初始化用时:%dms\r\n",timeGetTime()-dwNow);
return 0;
}
SQLite Transactions
最新推荐文章于 2025-05-24 13:49:21 发布