Java 无法在Android应用程序中使用外部数据库
我想在MySQL中使用我的外部数据库。我有一个存档的数据库Java 无法在Android应用程序中使用外部数据库,java,android,mysql,database,sqlite,Java,Android,Mysql,Database,Sqlite,我想在MySQL中使用我的外部数据库。我有一个存档的数据库database.db.zip,并将其复制到我的Android Java项目的assets文件夹中。最后,我创建了一个用于打开数据库的类: import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQue
database.db.zip
,并将其复制到我的Android Java项目的assets
文件夹中。最后,我创建了一个用于打开数据库的类:
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class databaseOpen extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "parole.db";
private static final int DATABASE_VERSION = 1;
public databaseOpen(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public String risposta(String parolain ){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] selectionArgs = {"ciao"};
Cursor c =db.query("prima", null, null,selectionArgs, null, null, null);
c.moveToFirst();
return c.getString(0);
}
}
我已经在我的主页
中回收了它:
private databaseOpen db;
@Override
protected void onCreate(Bundle savedInstanceState) {
db = new databaseOpen(this);
Toast toast=Toast.makeText(this, db.risposta("ciao"), Toast.LENGTH_LONG);
}
但它不起作用。以下是我得到的输出:
09-26 15:20:23.761 1099-1099/? I/SQLiteAssetHelper successfully opened database parole.db
09-26 15:20:23.764 1099-1099/? E/SQLiteLog (1) no such table: prima
09-26 15:20:23.783 1099-1099/? D/AndroidRuntime Shutting down VM
09-26 15:20:23.801 1099-1099/? E/AndroidRuntime FATAL EXCEPTION: main
Process: com.example.roby.jarvis, PID: 1099
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.roby.jarvis/com.example.roby.jarvis.Home}: android.database.sqlite.SQLiteException: no such table: prima (code 1): , while compiling: SELECT * FROM prima
我想在mysql中使用我的外部数据库,我已经压缩了它(database.db.zip),并在java项目的assensts文件夹中复制了它
记录在案,
要么你使用了错误的术语,要么你感到困惑。
Android和您文章中的代码都与SQLite配合使用。
它不能与MySQL一起工作
当某些东西不起作用时,
阅读错误消息,
这通常可以解释问题,例如:
09-26 15:20:23.764 1099-1099/?E/SQLiteLog﹕ (1) 没有这样的表格:prima
文件中不存在名为“prima”的表
调试的下一步是检查电脑上文件的内容,
使用sqlite3
命令行工具或类似工具,
并查看它有哪些表(.schema
命令)
我想在mysql中使用我的外部数据库,我已经压缩了它(database.db.zip),并在java项目的assensts文件夹中复制了它
记录在案,
要么你使用了错误的术语,要么你感到困惑。
Android和您文章中的代码都与SQLite配合使用。
它不能与MySQL一起工作
当某些东西不起作用时,
阅读错误消息,
这通常可以解释问题,例如:
09-26 15:20:23.764 1099-1099/?E/SQLiteLog﹕ (1) 没有这样的表格:prima
文件中不存在名为“prima”的表
调试的下一步是检查电脑上文件的内容,
使用sqlite3
命令行工具或类似工具,
然后查看它有哪些表(
.schema
命令)。首先:您没有将数据库
文件从资产文件复制到设备,这显然会导致找不到此类表
试试这个代码,它对我有用。(我还对不同部分进行了评论,以供您理解)
用法:
DataBaseHelper dataBaseHelper = new DataBaseHelper(this);
try {
dataBaseHelper.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
dataBaseHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
Cursor c = dataBaseHelper.getData();
if(c!=null) {
/* your cursor code */
c.close();
}
dataBaseHelper.close();
*注意:某些设备可能无法将数据库复制到设备。(已知设备:OnePlus)
不要忘记添加此权限
在你的舱单上
编辑1:OnePlus能够将数据库复制到/data/data//databases/.db
,但它不允许访问该数据,对此我没有任何线索。首先:您没有将数据库
文件从资产文件复制到设备,这显然会导致找不到此类表
试试这个代码,它对我有用。(我还对不同部分进行了评论,以供您理解)
用法:
DataBaseHelper dataBaseHelper = new DataBaseHelper(this);
try {
dataBaseHelper.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
dataBaseHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
Cursor c = dataBaseHelper.getData();
if(c!=null) {
/* your cursor code */
c.close();
}
dataBaseHelper.close();
*注意:某些设备可能无法将数据库复制到设备。(已知设备:OnePlus)
不要忘记添加此权限
在你的舱单上
编辑1:OnePlus能够将数据库复制到/data/data//databases/.db
,但它不允许访问该数据,对此我没有任何线索。Logcat告诉您。。。没有这样的桌子:primaLogcat告诉你。。。没有这样的表:但我在projecti中复制数据库的地方我使用了ur代码,但android没有找到表,但应用程序现在没有崩溃,我尝试使用sqlitebrowser搜索表,它找到了表和值您有存储数据库的路径吗?通过记录路径或通过sqlitebrowser获取路径。如果您尝试手动编辑上述代码中的DB_路径,我已将数据库复制到pc中手机中的app/databases文件夹中,并已将其打开sqlitebrowser@swalkner请参见Edit1
但我在project中复制数据库的地方我使用了你的代码,但安卓找不到表,但应用程序现在没有崩溃,我尝试使用sqlitebrowser搜索表,它会找到表和值您有存储数据库的路径吗?通过记录路径或通过sqlitebrowser获取路径。如果您尝试手动编辑上述代码中的DB_路径,我已将数据库复制到pc中手机中的app/databases文件夹中,并已将其打开sqlitebrowser@swalkner请参见Edit1