2016-06-01 9 views
0

私のプログラムは現在、データベースを読み取り専用モードで開きます。DBを読み込み専用モードと読み込み/書き込みモードで開く間にSQLite DBを閉じますか?

sqlite3_open_v2(filename, &db, SQLITE_OPEN_READONLY, nullptr); 

その後、私は、データベースへの書き込みを決めることができるので、私は読み取り/書き込みするために私の接続を促進する必要があります。私は現在、再びそれを開きます。

sqlite3_open_v2(filename, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nullptr); 

私の質問は、私は二度目のデータベースを開く前に

sqlite3_close(db); 

を呼び出す必要があるかどうか?

答えて

2

はい。

sqlite3_open_v2は、完全に新しいデータベースオブジェクトへのポインタを、2番目の引数として渡されたポインタへのポインタに書き込みます。それは前にあったものは何も読んだり何もしません。古いデータベースでsqlite3_closeを呼び出すことに失敗すると、リソースリークが発生します。

関連する問題