0

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
4

3 に答える 3

1

内からreadInFilesdataDBはすでにタイプsqlite3**であるため、次のように呼び出す必要があります。

addCourse(dataDB,deg,k);
于 2012-04-29T13:15:30.583 に答える
0

addCourse(dataDB, deg, k); を試すことができます。わかりません。readInFile でデータベースを初期化しますか? db だけを使用する場合は、readInFile(sqlite3* dataDB) および addCourse(sqlite* dataDB) のように宣言できます。

于 2012-04-29T13:25:02.383 に答える
0

単にポインター自体を渡さないのはなぜですか? readInFilesおよび関数は、addCourseおそらくポインターに書き込む必要はなく、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(データベース)は一種の冗長です:)

于 2012-04-29T13:18:24.460 に答える