2012-04-29 122 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)