无法打开数据库-Android

无法打开数据库-Android,第1张

概述我正在用SQL开发一个简单的Android应用程序.我按照以下指南 - http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/尝试打开数据库时出错.这是我的DataBaseHelp.Java类 - public class DataBase

我正在用sql开发一个简单的Android应用程序.
我按照以下指南 –
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

尝试打开数据库时出错.
这是我的DataBaseHelp.java类 –

public class DataBaseHelper extends sqliteOpenHelper{private static String DB_PATH = "/data/data/and.testDB/databases/";private static String DB_name = "MyData";private sqliteDatabase myDataBase; private final Context myContext;public DataBaseHelper(Context context) { super(context,DB_name,null,1);    this.myContext = context;} public voID createDataBase() throws IOException{ boolean dbExist = checkDataBase(); if(dbExist){  //do nothing - database already exist }else{     this.getReadableDatabase();     try {   copyDataBase();  } catch (IOException e) {      throw new Error("Error copying database");     } }}private boolean checkDataBase(){ sqliteDatabase checkDB = null; try{  String myPath = DB_PATH + DB_name;  checkDB = sqliteDatabase.openDatabase(myPath,sqliteDatabase.OPEN_Readonly); }catch(sqliteException e){  //database does't exist yet. } if(checkDB != null){  checkDB.close(); } return checkDB != null ? true : false;}private voID copyDataBase() throws IOException{ //Open your local db as the input stream inputStream myinput = myContext.getAssets().open(DB_name); // Path to the just created empty db String outfilename = DB_PATH + DB_name; //Open the empty db as the output stream OutputStream myOutput = new fileOutputStream(outfilename); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myinput.read(buffer))>0){  myOutput.write(buffer,length); } //Close the streams myOutput.flush(); myOutput.close(); myinput.close();}public voID openDataBase() { //Open the database    String myPath = DB_PATH + DB_name; myDataBase = sqliteDatabase.openDatabase(myPath,sqliteDatabase.OPEN_Readonly);}@OverrIDe public synchronized voID close() {         if(myDataBase != null)          myDataBase.close();         super.close(); } @OverrIDe public voID onCreate(sqliteDatabase db) { } @OverrIDe public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {  }}

这是我的testDB.java类 –

public class testDB extends Activity {sqliteDatabase myDataBase;public String[] gur = new String[4];/** Called when the activity is first created. */@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    DataBaseHelper myDbHelper = new DataBaseHelper(this);    myDbHelper = new DataBaseHelper(this);    try {        myDbHelper.createDataBase();} catch (IOException ioe) {    throw new Error("Unable to create database");}try {    myDbHelper.openDataBase();// Here is the problem-Can't open the database/}catch(sqlException sqle){    throw sqle;}    myDataBase = myDbHelper.getWritableDatabase();    Cursor c = myDataBase.rawquery("SELECT * FROM beer",null);if (c != null ) {    if  (c.movetoFirst()) {          for(int x=0;x< 1;x++)          {              gur[x] = (c.getString(c.getColumnIndex("name")));              c.movetoNext();          }}    Toast.makeText(this,gur[0],Toast.LENGTH_LONG).show();}        }    }

我使用sqlite数据库浏览器创建了数据库,创建了一个名为“beer”的表,添加了2行并将其放在我项目的/ assests文件夹中.

请注意,我是sql的新手,也是我第一次使用它.我整天都在寻找答案而找不到答案.

谢谢!

最佳答案在sqlite数据库浏览器中打开数据库并添加一个名为“androID_Metadata”的新表,

您可以执行以下SQL语句来执行此 *** 作:

CREATE table“androID_Metadata”(“locale”TEXT DEFAulT’en_US’)

现在在“androID_Metadata”表中插入一行文本“en_US”:

INSERT INTO“androID_Metadata”VALUES(‘en_US’)

然后,有必要将表的主ID字段重命名为“_ID”,以便AndroID知道绑定表的ID字段的位置.

现在将新数据库文件复制到您的项目资产文件夹中,它将工作…..

总结

以上是内存溢出为你收集整理的无法打开数据库-Android全部内容,希望文章能够帮你解决无法打开数据库-Android所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139732.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存