我在 c:\tmp 中使用以下代码在 C++ 中创建了数据库。还创建了表并可以在 C++ 中访问表。但是当我尝试通过 SQLite 命令行访问该表时,出现“没有这样的表”错误。
这是我在 C++ 中创建数据库的方法
rc = sqlite3_open_v2("file:///C:/tmp/myTest1.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE| SQLITE_OPEN_URI, NULL );
if( rc ){
printf( "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
}else{
printf( "Opened database successfully\n");
}
/* Create SQL statement */
sql = "CREATE TABLE LoadDates(" \
"ID TEXT NOT NULL," \
"DT INT NOT NULL );";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
printf( "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
printf( "Table created successfully\n");
}
sql = "INSERT INTO LoadDates (ID,DT) " \
"VALUES ('A1', 20160701 ); " \
"INSERT INTO LoadDates (ID,DT) " \
"VALUES ('A2', 20160601 ); " \
"INSERT INTO LoadDates (ID,DT) " \
"VALUES ('A3', 20160801 );";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
printf( "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
printf( "Records created successfully\n");
}
然后,当我通过命令行访问 LoadDates 时,出现以下错误。我可以在 c:\tmp 目录中看到 myTest1.db
c:\tmp>sqlite3.exe myTest1
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite> select * from LoadDates;
Error: no such table: LoadDates
最佳答案
在命令行调用 sqlite3.exe
时使用完整的文件名:
C:\temp> sqlite3.exe myTest1.db
关于c++ - 无法在 SQLite 的命令行上访问表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385739/