2010-01-29 48 views
0

我正在创建一个数据库并删除它,在我的android htc mobile sqlite数据库中添加注册表没有任何问题。在android中创建数据库

但现在,数据库每次的最后删除后,我想创建一个新的我得到一个SQLite的例外,说我“无法打开数据库文件”具有下列数据:

的serialVersionUID(RuntimeException的)= -7034897190745766939
原因= SQLiteException(ID = 830058513528)
原因= SQLiteException(ID = 830058513528)
detailMessage = “无法打开数据库文件”(ID = 830058513560) stackState =(ID = 830058513672)
stackTrace = n ULL

这是我的代码来创建数据库:

private static String DB_PATH = "/data/data/Android.Applications/databases/testdatabase.db"; 

public void OpenDataBase(){ 

      SQLiteDatabase ApplicationDB = null; 
      //Si existe la base de datos 
      if(checkDataBase()) 
      { 
       //Open readonlymode 
       String myPath = DB_PATH; 
       //open database as readwrite mode 
       ApplicationDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 
      } 
      else 
      { 
       try 
       { 
        String myPath = DB_PATH ; 
        ApplicationDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.CREATE_IF_NECESSARY); 
        CreateTables(); 
        //create all the necessary tables 
        System.out.println("DataBASE CREATED"); 
       } 
       catch(SQLiteException e) 
       { 
        System.out.println("SQL LiteException"+ e.getMessage()); 
       } 
      } 
     } 

private boolean checkDataBase(){ 

     try{ 
      String myPath = DB_PATH; 
      ApplicationDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 

     }catch(SQLiteException e){ 

      //database does't exist yet. 
     } 
     if(ApplicationDB != null){ 

      ApplicationDB.close(); 
     } 
     return ApplicationDB != null ? true : false; 
    } 

这是删除数据库

public boolean DeleteDatabase() 
     { 
      boolean wasdeleted; 
      try 
      { 
       File file=new File(DB_PATH); 
       wasdeleted=file.delete(); 
      } 
      catch(SecurityException e) 
      { 
       wasdeleted=false; 

      } 
      return wasdeleted; 
     } 

能给我一只手的代码?即时通讯stucked在这里,导致此代码工作几个小时前...

在此先感谢。 最好的问候。 何塞。

回答

2

您可能会考虑切换为使用SQLiteOpenHelper,这会消除大部分代码。

+0

嗨, 当前,我展示的代码是扩展到SQLiteOpenHelper类。 谢谢。 此致敬礼。 何塞。 – Sosi 2010-01-29 16:14:07

+0

SQLiteOpenHelper子类应该看起来完全不像你发布的东西。例如,您不要在SQLiteOpenHelper中打开自己的数据库 - SQLiteDatabase对象作为onCreate()和onUpgrade()的参数提供给您。 – CommonsWare 2010-01-30 01:54:29