私は自分のデータベースをAndroidアプリケーションで使用しようとしています。このトピックに関するほとんどのトピックとチュートリアルでは、SQLiteOpenHelper
を使用して作成して開くことができます。data/data/com.my.application/databases
フォルダを使用してください。私はファイルをcontext.getAssets.open(dbname)
からデフォルトのsqliteパスにコピーすることを推奨しています。これが実際に解決策であれば、私のdatabase.db
ファイルを渡す正しい道は何ですか?自分のディレクトリにあるAndroidデータベース
1
A
答えて
0
私の友人、あなたはあなたがどの道を知りたいんこの1つのコード
/**
*
* Purpose: Open and Read database to fetch records from different database
* tables.
*
* @version 1.0
*
* @author ketan kalariya([email protected])
*
* **/
public class DataBaseHelper extends SQLiteOpenHelper {
private Context myContext;
private SQLiteDatabase myDataBase;
// Comman KEYs of tables
public static String MASTERFENCE_TABLE = "MasterFence";
public static String KEY_ID = "_id";
public static String AREA = "area";
public static String TAG = "tag";
public static String TITLE = "title";
public static String DESCR = "description";
public static String NO = "no";
public static String ADDFENCEPOINT_TABLE = "AddFencePoint";
public static String ADDLATLONG_TABLE = "AddLatLong";
public static String LAT = "lat";
public static String LONG = "long";
public static String TEMPFENCEPOINT_TABLE = "TempFencePoint";
public static String TEMPLATLONG_TABLE = "TempLatLong";
public DataBaseHelper(Context context) {
super(context, context.getResources().getString(R.string.dbname), null,
1);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
// ---Create the database---
public void createDataBase() throws IOException {
// ---Check whether database is already created or not---
boolean dbExist = checkDataBase();
if (!dbExist) {
this.getReadableDatabase();
try {
// ---If not created then copy the database---
copyDataBase();
this.close();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
// --- Check whether database already created or not---
private boolean checkDataBase() {
try {
final String myPath = "/data/data/" + myContext.getPackageName()
+ "/databases/" + myContext.getString(R.string.dbname);
final File f = new File(myPath);
if (f.exists())
return true;
else
return false;
} catch (SQLiteException e) {
e.printStackTrace();
return false;
}
}
// --- Copy the database to the output stream---
public void copyDataBase() throws IOException {
final InputStream myInput = myContext.getAssets().open(
myContext.getString(R.string.dbname));
final String outFileName = "/data/data/" + myContext.getPackageName()
+ "/databases/" + myContext.getString(R.string.dbname);
final OutputStream myOutput = new FileOutputStream(outFileName);
final byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
public void openDataBase() throws SQLException {
// --- Open the database---
final String myPath = "/data/data/" + myContext.getPackageName()
+ "/databases/" + myContext.getString(R.string.dbname);
myDataBase = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
}
/**
* Close the database
*/
public synchronized void closeDatabase() {
if (myDataBase != null)
;
myDataBase.close();
SQLiteDatabase.releaseMemory();
super.close();
}
/** This method is insert require detail in database table. **/
public long insertMasterFence(String area, String title, String descr,
String tag) {
ContentValues values = new ContentValues();
values.put(AREA, area);
values.put(TITLE, title);
values.put(DESCR, descr);
values.put(TAG, tag);
Log.v(" db ", area + " " + title + " " + " " + descr + " " + tag);
return myDataBase.insert(MASTERFENCE_TABLE, null, values);
}
+0
'extends SQLiteOpenHelper'部分を削除しました。正しく使用するとうまくいくかもしれませんが、 '.getWritableDatabase'を使ってデータベースを取得すると、データベースが空になる可能性があります(onCreateにコードがないため、多くのエラーが発生する可能性があります) – zapl
関連する問題
- 1. 自分自身のディレクトリ内のUnauthorizedAccessException
- 2. Android - 自分のタブコントロール
- 3. 自分のウェブサーバー上のデータベース
- 4. SQL Azureデータベースを自分のサーバーにエクスポート
- 5. 自分のデータを自分のデータベースに保存できません
- 6. SQL:あるデータベースのレコードを別のデータベースに自動的にコピー
- 7. Facebookを自分のAndroidアプリに統合
- 8. Android - データを自分のデータサーバーに保存
- 9. 自分のデータベースの場所データ - mysql
- 10. gitの.gitディレクトリを自分の店で追跡する方法
- 11. 自分自身のデータベース、ベストプラクティスを記入するためにthemoviedatabase.orgのデータベースを使用する
- 12. joomlaの拡張ディレクトリに自分の拡張機能を公開するには?
- 13. 自分のサーバーにあるすべてのデータを自分のipadアプリケーションのデータベースと同期させるのに最も効果的なのは何ですか?
- 14. Android:スピナーセレクターを自分の画像/アイコンに設定するには?
- 15. Management Studioにデータベースが表示されず、DATAディレクトリにあるデータファイル
- 16. 異なるディレクトリにあるソースファイルとオブジェクトファイルを持つ自動makefile
- 17. NoClassDefFoundError:自分のjarをAndroidプロジェクトにリンクする際の問題
- 18. 自分のAndroidアプリにブロードキャストを制限する方法
- 19. Android:自分の静的ライブラリを正しくリンクするには?
- 20. 自分のアプリケーションにウィジェットを追加する.- Android
- 21. SQL Serverで自分のデータベースのバックアップを作成する方法
- 22. は自分のsqliteデータベースに接続できません
- 23. IDを自分のデータベースに移動できません
- 24. 自分のPCの外にあるtomcatにアクセスできない
- 25. 自分のプロジェクトにあるフォームを別のプロジェクトに追加
- 26. Android - ContentValueとboolean型バグのあるデータベース?
- 27. ファイルから自分のデータベース構造を回復する
- 28. 自分の中にあるクラスのインスタンスを返す
- 29. C#:ファイルの差分のみをあるディレクトリから別のディレクトリにコピーする方法
- 30. 自分自身で作成したsqliteデータベースをアンドロイドにコピーできない
を試すことができますか?先? –
そうです。私は 'onCreate' /' onUpgrade'メカニズムを使わないと、データベースファイルをプロジェクトの "assets"フォルダに入れなければならないと思っていました。 – cgalvao1993