//插入及更新操作
int nRet = 0;
sqlite3 * db = NULL;
CString strFilePath; //数据库存储路径
//路径赋值(省略)
//连接数据库
nRet = sqlite3_open16(strFilePath, &db); //有几个打开函数可供调用,使用WCHAR类型路径用这个
if(nRet != SQLITE_OK)
{
LogD(_Q_D,L"数据库打开失败");
return -4;
}
CString strSQLSentence;
char *szSQLSentence = NULL;
组织SQL语句
**********************
{
//更新操作
strSQLSentence.Format(L"update tbl_ad set AD_TITLE='%s', AD_INFO='%s', BEGIN_TIME='%s', END_TIME='%s' where AD_ID='%s';", strADTitle, strADInfo, strADBeginTime, strADEndTime, strADId);
}
{
//插入操作
strSQLSentence.Format(L"insert into tbl_Advertisement values('%s','%s','%s','%s','%s');", strADId, strADTitle, strADInfo, strADBeginTime, strADEndTime);
}
**********************
//将SQL语句转换成sqlite函数能执行的UTF8格式
nLen = 0;
nLen = WideCharToMultiByte(CP_UTF8, 0, strSQLSentence, -1, NULL, 0, NULL, 0);
szSQLSentence = new char[nLen+1];
if (szSQLSentence == NULL)
{
return -6;
}
memset(szSQLSentence, 0, nLen+1);
WideCharToMultiByte(CP_UTF8, 0, strSQLSentence, -1, szSQLSentence, nLen+1, NULL, 0);
//锁定数据库
if(SQLiteLock(L"terminalplat.db",30*1000) == 0) //SQLiteLock为自写的一套锁机制中的函数
{
// 准备执行SQL
nRet = sqlite3_exec( db, "begin;", 0, 0, 0);
if(nRet == SQLITE_OK)
{
BOOL bSuccess = TRUE;
char * pErrMsg = NULL;
// 执行SQL
nRet = sqlite3_exec( db, szSQLSentence, 0, 0, &pErrMsg);
if(nRet != SQLITE_OK)
 
OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:
软件属于公共财(public domain),SQLite可说是某种「美德软件」(virtueware),作者本人放弃着作权,而给使用SQLite的人以下的「祝福」(blessing):
May you do good an ......
SQLite 是一个实现了完备的(self-contained),可嵌入的(embeddable),零配置(zero-configuration)的SQL数据库引擎的小型的C函数库。它包含以下的特点:
.
事务处理原子化(atomic),一致化(consistent),持久化(isolated),绝缘化(durable),即使是在系统崩溃和掉电时
零配置,不 ......
近来因为工作需要加入sqlite 处理数据,下载了sqlite3.6.22(amalgamation 版本),又想自己动手编译出来想动态链接就动态,想静态链接也可以,于是有了这篇文章,有意思的是之前也试过编译Sqlite,但没成功,不了了之,可能近来要过年了
跟
RP有关吧:)。
1 首先创建vs2008的一个空DLL工程;
2 ......