検索

ホームページ  >  に質問  >  本文

Android中能不能判断一个数据库是create来的,还是open来的?

先简单说一下我想实现的功能,就是创建数据库的时候,同时也会创建一个表,然后就往表里插入数据;之后,就是打开数据库,然后对表的数据进行更新。
所以我想知道这个数据库是创建来的,还是打开来的,好让我执行不同的操作。
而我创建数据库的方法是继承SQLiteOpenHelper类和实现getWritableDatabase方法。具体如下图:

这样的话,我就打算判断这个mSqLiteDatabase(这是SQLiteDatabase的一个实例对象,截图没放出来)是创建来的,还是打开来的。因为我看文档里说,上图的方法是:存在该数据库就打开,不存在就创建。而getWritableDatabase方法是返回一个数据库的对象。所以我就这样瞎想,不知道可不可以判断。如果不行的话,有没有其它可替代的方法。

阿神阿神2772日前408

全員に返信(5)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:30:58

    実際には、新規作成か開いているかを気にする必要はありません。データがあるかどうかを確認し、データが存在しない場合は、データを作成します。新しいもの。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:30:58

    DatabaseHelperonCreate(SQLiteDatabase) メソッドでテーブルを作成するだけです。このメソッドは、データベースが最初に作成されるときに呼び出されます。あとはデータを挿入するだけです

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:30:58

    私はデータベースの操作に常に xutils を使用してきました。これはデータベースを非常にうまくカプセル化しており、非常にシンプルです。
    内部には db.openorupdate メソッドがあり、データを自動的に比較して開くか更新するかを決定します。

    Android のネイティブメソッドを使用する場合は、新しいデータがあるかどうかを確認するだけで済みます。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:30:58

    OnCreate は、データベースを初めて開くときにのみ呼び出されます。現時点では、テーブルを作成するだけで、次回開くときには OnCreate は呼び出されません。

    返事
    0
  • PHPz

    PHPz2017-04-17 17:30:58

    まず最初に、xiluoduyu さんの回答によると、考え方を変えれば、確かに私が望む機能を実現することは可能です。しかし、この質問をする過程で、タイトルに記載されている問題が、実際に私が知りたい、理解したいことであることがわかりました。おそらくこの質問は奇妙であるか、答えがないかもしれないので、最初にメモを作成し、後で戻ってきます。ありがとう!

    返事
    0
  • キャンセル返事