私は自分のデータベースを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. recyclerview Androidで自分のデータベースにアクセスする方法は?
- 2. PHPを自分のルートフォルダにあるデータベースとフォルダにアップロードする
- 3. 自分自身のディレクトリ内のUnauthorizedAccessException
- 4. Android - 自分のタブコントロール
- 5. 自分のウェブサーバー上のデータベース
- 6. SQL Azureデータベースを自分のサーバーにエクスポート
- 7. PHPは私のデータベース(MySQLの)で、自分のコードに問題がある4
- 8. Nginx:1つのディレクトリを自分自身の下にリダイレクトする必要があります
- 9. SQL:あるデータベースのレコードを別のデータベースに自動的にコピー
- 10. 自分のデータを自分のデータベースに保存できません
- 11. Android - データを自分のデータサーバーに保存
- 12. Facebookを自分のAndroidアプリに統合
- 13. APIは自分のデータベースである永久にデータを保存しますか?
- 14. 自分のデータベースの場所データ - mysql
- 15. Oauth2 Golang - 自分のデータベースとユーザー
- 16. cpanelサーバーで自分のデータベースにアクセスするには?
- 17. gitの.gitディレクトリを自分の店で追跡する方法
- 18. SqlAlchemyのオブジェクトの永続性 - データベースに自分自身を追加する
- 19. Mac、Androidスタジオ、エミュレータ、SQLiteデータベース - 実際にディレクトリを見つける?
- 20. 自分自身のデータベース、ベストプラクティスを記入するためにthemoviedatabase.orgのデータベースを使用する
- 21. Android。自分自身のJarライブラリを作成する
- 22. firebaseのディレクトリにあるファイルをandroidに一覧表示する
- 23. 自分のサーバーにあるすべてのデータを自分のipadアプリケーションのデータベースと同期させるのに最も効果的なのは何ですか?
- 24. joomlaの拡張ディレクトリに自分の拡張機能を公開するには?
- 25. Android:スピナーセレクターを自分の画像/アイコンに設定するには?
- 26. Java Android - 自分のクラスを作成
- 27. Management Studioにデータベースが表示されず、DATAディレクトリにあるデータファイル
- 28. NSIS:ユーザーに自分のインストールファイル/ディレクトリを選択するように促す
- 29. 異なるディレクトリにあるソースファイルとオブジェクトファイルを持つ自動makefile
- 30. CircleCI:V1ディレクトリ内のAndroidプロジェクトがあり
を試すことができますか?先? –
そうです。私は 'onCreate' /' onUpgrade'メカニズムを使わないと、データベースファイルをプロジェクトの "assets"フォルダに入れなければならないと思っていました。 – cgalvao1993