當我插入記錄時,我面臨以下問題: java.lang.runtimeexception unable to start activity componentinfo java.lang.nullpointerexception
。我在sqlite數據庫中插入值時收到空指針異常。當我嘗試通過放置一個斷點來檢查它的值時,DatabaseHelper dh = new DatabaseHelper(this)
中的dh即將出現爲空。下面是我的DatabaseHelper類的代碼和我嘗試插入值的類。我得到空指針異常,而插入數據到sqlitedatabase使用dbhelper
第一項活動:DbActivity.java
package com.example.dbhelpersimple;
import android.os.Bundle;
import android.provider.Contacts;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
public class DbActivity extends SQLiteOpenHelper {
public static final String COL_NAME = "name";
public static final String COL_CNT = "contact";
private static final String DATABASE_TABLE = "test";
private static String DATABASE_NAME = "PERSONS.db";
private static final String DATABASE_CREATE="CREATE TABLE test"+
"(name VARCHAR(10), contact VARCHAR(10));";
SQLiteDatabase db;
public DbActivity(Context context) {
super(context, DATABASE_NAME, null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_NAME);
onCreate(db);
}
void addrecord(String name, String contact)
{
ContentValues cv=new ContentValues();
cv.put(COL_NAME, name);
cv.put(COL_CNT, contact);
db.insert(DATABASE_TABLE, null, cv);
db.close();
}
void getrecords()
{
int i;
//String query="SELECT * FROM test";
Cursor c=db.query(DATABASE_TABLE, null, null, null, null, null, null);
c.moveToFirst();
while(c.isAfterLast()==false)
{
Log.d("Name", c.getString(0));
Log.d("Contact", c.getString(1));
}
}
}
次活動:manipulateActivity.java
package com.example.dbhelpersimple;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class manipulateActivity extends Activity{
Button btn1,btn2,btn3;
EditText edt1,edt2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_db);
edt1=(EditText)findViewById(R.id.edittextname);
edt2=(EditText)findViewById(R.id.edittextcontact);
DbActivity dbact= new DbActivity(this);
dbact.addrecord("sagar", "111");
}
}
發佈您的logcat錯誤。 – Akshay 2012-08-07 08:04:52
它可能會給你一個行號,告訴我們你粘貼的代碼中的哪一行也是:) – Nanne 2012-08-07 08:08:47