2013-01-22 41 views
-1

我完全陌生於android中的數據庫,並且試圖在android中使用sqlite創建一個簡單的應用程序。但是我的代碼存在一些問題,或者我無法找到最新的問題,我跑我的項目applicatioon停止,意想不到的,也是DATABSE不created..Please幫助me..My代碼如下:數據庫未創建並且應用程序意外停止

MainActivity.java

包com.example.dbdemo1;

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.view.ContextMenu; 
import android.view.Menu; 
import android.view.View; 
import android.view.ContextMenu.ContextMenuInfo; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ListView; 

public class MainActivity extends Activity { 
Button ins,del,upd; 
ListView lv; 
DbHelper dh; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ins = (Button)findViewById(R.id.button1); 
     upd = (Button)findViewById(R.id.button2); 
     del = (Button)findViewById(R.id.button3); 

     lv = (ListView)findViewById(R.id.listView1); 
     setUpList(); 
     dh = new DbHelper(this); 
     Cursor c =getAllData(); 
     registerForContextMenu(lv); 
     ins.setOnClickListener((OnClickListener) this); 
     upd.setOnClickListener((OnClickListener) this); 
     } 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     if(v.equals(ins)) 
     { 
      startActivity(new Intent(MainActivity.this, insertActivity.class)); 
     } 
     else 
     { 
      //startActivity(new Intent(MainActivity.this, updateActivity.class)); 
     } 
    } 
    private Cursor getAllData() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    private void setUpList() { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

DBhelper.java

package com.example.dbdemo1; 

import android.R.string; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DbHelper extends SQLiteOpenHelper{ 


    public static String db_name ="myDB.db"; 
    public static String fname = "first name"; 
    public static String lname = "last name"; 
    public static String contact = "contact"; 

    public DbHelper(Context context) { 
     super(context, db_name, null, 1); 
     // TODO Auto-generated constructor stub 
    } 

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

     { 
      db.execSQL("CREATE TABLE register(_ID INTEGER PRIMARY KEY AUTOINCREMENT,fName TEXT,lNmae TEXT,Contact TEXT);"); 
     } 
     catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     android.util.Log.v("Constants", "Upgrading database which will destroy all data"); 
     onCreate(db); 

    } 

} 

logcat的

01-22 07:54:40.003: W/dalvikvm(32581): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
01-22 07:54:40.013: E/AndroidRuntime(32581): FATAL EXCEPTION: main 
01-22 07:54:40.013: E/AndroidRuntime(32581): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dbdemo1/com.example.dbdemo1.MainActivity}: java.lang.ClassCastException: com.example.dbdemo1.MainActivity 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.os.Looper.loop(Looper.java:123) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at java.lang.reflect.Method.invokeNative(Native Method) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at java.lang.reflect.Method.invoke(Method.java:521) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at dalvik.system.NativeStart.main(Native Method) 
01-22 07:54:40.013: E/AndroidRuntime(32581): Caused by: java.lang.ClassCastException: com.example.dbdemo1.MainActivity 
01-22 07:54:40.013: E/AndroidRuntime(32581): at com.example.dbdemo1.MainActivity.onCreate(MainActivity.java:33) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-22 07:54:40.013: E/AndroidRuntime(32581): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-22 07:54:40.013: E/AndroidRuntime(32581): ... 11 more 

請幫我這個......請多關照!

+1

logcat說什麼? –

+0

01-22 07:54:40.013:E/AndroidRuntime(32581):致命例外:main 01-22 07:54:40.013:E/AndroidRuntime(32581):java.lang.RuntimeException:無法啓動活動ComponentInfo { com.example.dbdemo1/com.example.dbdemo1.MainActivity}:java.lang.ClassCastException:com.example.dbdemo1.MainActivity 01-22 07:54:40.013:E/AndroidRuntime(32581):\t at android.app .ActivityThread.performLaunchActivity(ActivityThread.java:2663) –

+0

你必須給數據庫版本號也是公共靜態final int DB_VERSION = 1;在你的DBhelper類中...希望這可以工作。 –

回答

0

你需要實現OnClickListener接口上的按鈕來使用setOnClickListener。

public class MainActivity extends Activity implements OnClickListener{ 

你可以像

ins.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
     } 
}); 

創建特定的按鈕匿名方法沒有實現OnClickListner接口。

+0

@ ajit-thanx .. :) –

0

要創建數據庫,您需要調用

dh.getWritableDatabase();