2013-10-01 74 views
-1

我正在玩一些SQLLite的基础知识,我尝试从我的Activity类创建一个非常简单的DataBase。应用程序运行正常,但是当我进入模拟器的文件资源管理器时,没有创建数据库,这里有什么问题?什么时候SQLite DataBase初始化?

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 



class sql1 extends SQLiteOpenHelper { 

    public static final String DBNAME="coordinates"; 
    public static final String TBNAME="show"; 
    private static final int Version=1; 


    public sql1(Context context, String name, CursorFactory factory, int version){ 
     super(context, DBNAME, factory, Version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase arg0) { 

     String CREATE_TABLE ="CREATE TABLE IF NOT EXISTS Names (Time VARCHAR,Long VARCHAR, Lang VARCHAR);";    

     arg0.execSQL(CREATE_TABLE); 
     Log.d("TAG","Created Database"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 


} 


} 

回答

1

在您的主要活动,这样做:

SQLiteDatabase sqliteDatabase = NULL;

sql1 databaseHelper = new sql1(_context);

sqliteDatabase = databaseHelper.getWritableDatabase();

0

我认为问题可能是您使用的关键字像龙。指定另一个名字。对于时间我不知道,但它可以是一个关键字太

+0

嗨,我试图更换关键字名称,但它仍然没有创建 –

0

试试这个

  public class DbHelper extends SQLiteOpenHelper { 

    public DbHelper() { 

     super(dataContext, DB_NAME, null, 1); 

     DB_PATH = "/data/data/" 
        + dataContext.getApplicationContext(). 
        getPackageName()+ 
        "/databases/"; 

     boolean dbExist = checkDataBase(); 
     if (!dbExist) { 

      this.getReadableDatabase(); 
      try { 
       copyDataBase(); 

      } catch (IOException e) { 
       throw new Error("Error copying database"); 
      } 
     } 

    } 

    private void copyDataBase() throws IOException { 
     // TODO Auto-generated method stub 

     InputStream inFile = dataContext.getAssets().open(DB_NAME); 
     String outFileName = DB_PATH + DB_NAME; 
     OutputStream myOutput = new FileOutputStream(outFileName); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = inFile.read(buffer)) > 0) { 
      myOutput.write(buffer, 0, length); 
     } 
     // Close the streams 
     myOutput.flush(); 
     myOutput.close(); 
     inFile.close(); 
     } 

     private boolean checkDataBase() { 
     // TODO Auto-generated method stub 

     File dbFile = new File(DB_PATH + DB_NAME); 

     return dbFile.exists(); 



    } 

    @Override 
    public void onCreate(SQLiteDatabase arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

    } 
+0

嗨Saj,是用这种方法它的工作原理,我曾尝试过,但我想使它与OpenHelper一起工作 –

+0

你好,我编辑上面,现在试试这种方式 – Saj

0

SQLiteOpenHelperonCreate通话不叫第一次数据库查询到,更具体首次​​或getReadableDatabase被调用。

+0

我试着加入 –

+0

db = this.getReadableDatabase(); \t \t \t \t \t \t \t \t Log.d( “TAG”, “创建的数据库”);但仍未显示 –

+0

您确定您正在检查数据库的正确位置吗?即'/ data/data//databases/' –

相关问题