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

マイプロトタイプ:readInFiles関数内から

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

コール:ここ

addCourse(&dataDB,deg,k); 

は私のエラーです:

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

コード内のコメントを誤解した場合は、編集をロールバックしてください。 – Mat

答えて

1

、あなたが呼び出す必要があるのでは、すでにタイプsqlite3**は次のとおりです。

addCourse(dataDB,deg,k); 
+0

私は現時点でこのエラー "database.c"を取得しようとしています。行50:警告:引数1はプロトタイプと互換性がありません。 プロトタイプ:構造体sqlite3 {}へのポインタ: "database.h"、行51 引数:struct sqlite3へのポインタへのポインタ –

+0

他に何か変更しましたか?メッセージは、プロトタイプは "sqlite3 **"と言っていますが、このコメントでは "sqlite3 *"と書いてあります。 – Mat

+0

確かにそれはsqlite *だったので、ある時点でそれを変更したに違いない –

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を初期化したいですか? dbを使用している場合、readInFile(sqlite3 * dataDB)とaddCourse(sqlite * dataDB)のように宣言できます。

関連する問題