2017-09-02 6 views
0

私は、あらかじめデータがロードされているSQLiteデータベースを作成するには、this推奨ガイドをお読みください。しかし、私は必要なデータベースファイル(.db)を生成する方法を理解できません。SQLデータベースファイルをインポートする方法

"DB Browser for SQLite"を使用してデータベースを書きましたが、データベースを作成するコマンド(CREATE TABLE IF NOT EXISTSなど)として保存することしかできません。

ファイルを必要な.db形式で保存するにはどうすればよいですか?

Thisウェブサイトのソリューションは、私のファイルが間違ったフォーマットであると考えている理由です。コンテキストの場合

次のように、私が経験していますエラーは次のとおりです。

09-02 23:47:58.681 19704-19704/company.app W/SQLiteAssetHelper: copying database from assets... 
09-02 23:47:58.682 19704-19704/company.app W/SQLiteAssetHelper: database copy complete 
09-02 23:47:58.684 19704-19704/company.app E/SQLiteLog: (26) file is encrypted or is not a database 
09-02 23:47:58.684 19704-19704/company.app E/DefaultDatabaseErrorHandler: Corruption reported by sqlite on database: /data/user/0/company.app /databases/app .db 
09-02 23:47:58.684 19704-19704/company.app E/DefaultDatabaseErrorHandler: deleting the database file: /data/user/0/company.app /databases/app .db 
09-02 23:47:58.686 19704-19704/company.app E/SQLiteLog: (14) cannot open file at line 32504 of [bda77dda96] 
09-02 23:47:58.686 19704-19704/company.app E/SQLiteLog: (14) os_unix.c:32504: (2) open(/data/user/0/company.app /databases/app .db) - 
09-02 23:47:58.687 19704-19704/company.app E/SQLiteDatabase: Failed to open database '/data/user/0/company.app /databases/app .db'. 
                     android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
                      at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
                      at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
                      at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808) 
                      at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:796) 
                      at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696) 
                      at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:671) 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.returnDatabase(SQLiteAssetHelper.java:408) 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.createOrOpenDatabase(SQLiteAssetHelper.java:401) 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:176) 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getReadableDatabase(SQLiteAssetHelper.java:254) 
                      at company.app .MyDatabase.randomiseItBro(MyDatabase.java:33) 
                      at company.app .MainActivity.randomise(MainActivity.java:55) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.view.View$DeclaredOnClickListener.onClick(View.java:4695) 
                      at android.view.View.performClick(View.java:5612) 
                      at android.view.View$PerformClick.run(View.java:22285) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6123) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
09-02 23:47:58.688 19704-19704/company.app W/SQLiteAssetHelper: could not open database app .db - unknown error (code 14): Could not open database 
09-02 23:47:58.689 19704-19704/company.app D/AndroidRuntime: Shutting down VM 
09-02 23:47:58.689 19704-19704/company.app E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: company.app , PID: 19704 
                     java.lang.IllegalStateException: Could not execute method for android:onClick 
                      at android.view.View$DeclaredOnClickListener.onClick(View.java:4700) 
                      at android.view.View.performClick(View.java:5612) 
                      at android.view.View$PerformClick.run(View.java:22285) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6123) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
                     Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.view.View$DeclaredOnClickListener.onClick(View.java:4695) 
                      at android.view.View.performClick(View.java:5612)  
                      at android.view.View$PerformClick.run(View.java:22285)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6123)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)  
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.getVersion()' on a null object reference 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:178) 
                      at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getReadableDatabase(SQLiteAssetHelper.java:254) 
                      at company.app .MyDatabase.randomiseItBro(MyDatabase.java:33) 
                      at company.app .MainActivity.randomise(MainActivity.java:55) 
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at android.view.View$DeclaredOnClickListener.onClick(View.java:4695)  
                      at android.view.View.performClick(View.java:5612)  
                      at android.view.View$PerformClick.run(View.java:22285)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6123)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)  

答えて

1

あなたは「新しいデータベース」ツールバーのボタンをクリックすると、あなたはSQLiteのデータベースファイルを作成します。あなたがテーブルやものを作成し、 "変更を書き込む"ツールバーのボタンをクリックすると、そのデータベースファイルを更新します。データベースファイルを希望の方法で取得したら、それはassets/に含めてSQLiteAssetHelperで使用するファイルです。

SQLiteのDBブラウザのLinux版では、デフォルトでファイルにファイル拡張子が適用されません。データベースファイルを作成するときに自分で.dbを追加するか、作成後に名前を変更します。

+0

私はこれを試しましたが、引き続きエラーが発生します。私の研究は私のデータベースファイルが間違ったフォーマットであると信じさせました。そのファイルが 'CREATE TABLE'などの形式であると言っていますか? –

+0

@TomJames:いいえ、私が概説した手順に従えば、SQLiteデータベースファイルが得られます。これは、SQLiteのDBブラウザ以外のSQLiteクライアント(たとえば、 'sqlite3'コマンドラインツール)で使用することができます。スタックトレースに関しては、アプリを完全にアンインストールしてから、再インストールして実行してください。また、FWIW、あなたの 'applicationId'とデータベースのファイル名には空白が含まれているようですが、あなたの質問にマテリアルをどのように投稿したかの人工物だと思います。 – CommonsWare

+0

私は今、あなたが私の質問を解決したことを理解しています。患者に感謝します。はい、それはアプリケーションと会社名を急いで貼り付けるだけでした。 –

0

あなただけのmyfunc.jsファイルのようにかのindex.htmlファイルを作成することができますが、この1つはコードとmydb.sqlです。定期的な単語ファイルの例:

CREATE DATABASE activedb; CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );

その後、私はそれはあなたがやろうとしているものだと思うdatabase_name < mydb.sql を使用することができます。私はわかりません。

0

あなたは、あなたはおそらく以下の二つの要件のいずれか欠けている、データベースのディレクトリへの資産からデータベースを転送するために、アプリケーションで正しく世話をしている場合:

  1. 主キーと命名する必要が_id
  2. データベースは、あなたがcraeteする必要がある1つの特定のテーブルを必要とします:CREATE TABLE android_metadata (_id INTEGER PRIMARY KEY, locale TEXT)
関連する問題