2012-02-14 65 views
5

Kohli.javacơ sở dữ liệu SQLite ..onCreate() không được gọi là

package com.kohli; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.content.Context; 

public class KohlifActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

      Log.i("KOHLIActivity", "qwert11111111"); 

      setContentView(R.layout.main); 
      Log.i("KOHILActivity", "qwert22222222222"); 

     DbHelper1 DbHelper=new DbHelper1(this) ; 

     Log.i("KOHLIfActivity", "qwert3333333333"); 



    } 
} 



DbHelper1.java 
package com.kohli; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.provider.BaseColumns; 
import android.util.Log; 

public class DbHelper1 extends SQLiteOpenHelper 
{ 

    static final String TAG = "DbHelper1"; 
    static final String DB_NAME = "timeline.db"; 
    static final int DB_VERSION = 1; 
    static final String TABLE = "timeline"; 
    static final String C_ID = BaseColumns._ID; 
    static final String C_CREATED_AT = "created_at"; 
    static final String C_SOURCE = "source"; 
    static final String C_TEXT = "txt"; 
    static final String C_USER = "user"; 
    Context context; 

    public DbHelper1(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
     this.context = context; 
     Log.d(TAG, "constructor111111"); 
     //System.out.println("dbhelper constructor"); 
    } 

    // Called only once, first time the DB is created 

    public void onCreate(SQLiteDatabase db) { 
    String sql = "create table " + TABLE + " (" + C_ID + " int primary key, " 
    + C_CREATED_AT + " int, " + C_USER + " text, " + C_TEXT + " text)"; 

    db.execSQL(sql); 
    Log.d(TAG, "onCreated sql:22222222 "); 
    //System.out.println("dbhelper oncreate"); 
    } 

    // Called whenever newVersion != oldVersion 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // Typically do ALTER TABLE statements, but...we're just in development, 
    // so: 
    db.execSQL("drop table if exists " + TABLE); // drops the old database 
    Log.d(TAG, "onUpdated 33333333"); 
    //System.out.println("dbhelper onupgrade"); 
    onCreate(db); // run onCreate to get new database 
    } 


} 

tôi đã viết đoạn mã sau để tạo ra một cơ sở dữ liệu với một bảng ... đầu ra tại logcat là :: qwert111111 qwert22222 constructor111111 qwert3333 .. đó là chức năng oncreate không được gọi để cơ sở dữ liệu cũng không được tạo ra ...

Trả lời

20

Cơ sở dữ liệu không thực sự được tạo cho đến khi bạn gọi getWritableDatabase() trên đối tượng dbHelper.

+0

thanx rất nhiều cho phản hồi ur ... :) –

+0

Nhưng ngay cả khi gọi 'getWritableDatabase()' thì 'onCreate (SQLiteDatabase a)' không được gọi. Xin vui lòng bất kỳ lời khuyên? – Daniel

+3

@Daniel Phương thức 'onCreate' sẽ được gọi khi bạn gọi' getWritableDatabase'/'getReadableDatabase' chỉ khi cơ sở dữ liệu chưa tồn tại trên trình giả lập/thiết bị (để nó có thể được tạo). Nếu bạn có vấn đề liên quan đến điều này, bạn nên gửi một câu hỏi cung cấp chi tiết bổ sung. – Luksprog

Các vấn đề liên quan