2012-04-29 207 views
0

我想通过我的sqlite数据库通过功能,然后再通过到另一个。这是我的代码。Sqlite通过函数传递数据库

//database Name 
// Create a handle for database connection, create a pointer to sqlite3 
sqlite3 *dataDB; 

//I send it through to the function here 
// Execute the query for creating table 
retval = sqlite3_exec(dataDB,create_students,0,0,0); 

我的原型:

int readInFiles(sqlite3 ** dataDB); 
void addCourse(sqlite3 ** dataDB, struct course,int k); 

呼叫从readInFiles函数中:

addCourse(&dataDB,deg,k); 

这是我的错误:

"database.c", line 50: warning: argument #1 is incompatible with prototype: 
     prototype: pointer to pointer to struct sqlite3 {} : "database.h", line 51 
+0

如果我误解了代码中的注释,请回滚我的编辑。 – Mat 2012-04-29 13:17:41

回答

1

readInFiles内,dataDBsqlite3**型的了,所以你需要调用:

addCourse(dataDB,deg,k); 
+0

我现在尝试,并得到这个错误“database.c”,第50行:警告:参数#1与原型不兼容: 原型:指向结构sqlite3 {}:“database.h”,第51行 参数:指向struct sqlite3指针的指针{} – 2012-04-29 13:18:18

+0

您是否更改了其他任何内容?消息说原型是“sqlite3 **”,但在这个评论中它说“sqlite3 *”....有些东西是可疑的。 – Mat 2012-04-29 13:20:54

+0

是的,它是SQLite *,我一定已经改变它在某一点上感谢队友 – 2012-04-29 13:21:55

0

为什么不直接传递指针本身?据推测,readInFilesaddCourse函数不需要写入指针,只能写入sqlite3对象。

sqlite3 *db; 

retval = sqlite3_exec(db, create_students, 0, 0, 0); 

int readInFiles(sqlite3 *db); 
void addCourse(sqlite3 *db, struct course, int k); 

addCourse(db, deg, k); 

另外,dataDB(datadatabase)是一种冗余:)的

0

可尝试addCourse(dataDB,DEG,K); 我不明白,你想在readInFile中初始化数据库吗? 如果你只是使用db,你可以声明像readInFile(sqlite3 * dataDB)和addCourse(sqlite * dataDB)