我想使用odbc api将SQLite添加到现有数据库应用程序。我是SQLite的新手。所以我需要一些启动提示。这是我的代码的一部分

wchar_t wszInStr[256] = L"DRIVER=SQLite3 ODBC Driver; Version=3; Database=D:\\Amin88\\AminDB.db; LongNames=0; Timeout=1000;NoTXN=0; SyncPragma=NORMAL; StepAPI=0;"
wchar_t wszOutStr[1024];
SQLSMALLINT uOutLen = 0;
retcode = SQLDriverConnectW(m_hdbc, hWndMain, wszInStr, _countof(wszInStr), wszOutStr, _countof(wszOutStr), &uOutLen, SQL_DRIVER_NOPROMPT);
const wchar_t * wszQuery = L"CREATE TABLE ATDBROLE ( \"ID\" INTEGER NOT NULL )" ;
SQLRETURN retcode;
retcode = ::SQLExecDirectW(hstmt, (SQLWCHAR*)wszQuery, SQL_NTS);
wprintf(L"retcode=%d\n", retcode); //retcode=100


SQLDriverConnectW返回0(成功),并且文件'D:\ Amin88 \ AminDB.db'的大小为零吗?这是否意味着数据库已创建?为什么大小为0?
假设数据库已创建,为什么CREATE DATABASE返回SQL_NODATA?
提前致谢

最佳答案

SQlite3 ODBC管理器创建大小为0的数据库,因为SQLite格式是比数据库更通用的文件格式,并且它不包含任何对象时大小为0。 SQLExecuteDirectW返回SQL_NODATA,因为它需要';'在查询末尾,并且仅在提交事务后文件大小才为非零。

关于c - 需要有关SQLite的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40326890/

10-10 22:24