Android 从Sqlitedatabase向listview获取数据时发生Logcat错误

Android 从Sqlitedatabase向listview获取数据时发生Logcat错误,android,sqlite,listview,Android,Sqlite,Listview,我的XML文件是 mydatabase适配器类是 包com.example.kern import android.os.Bundle; import android.provider.Contacts.People; import android.app.Activity; import android.app.ListActivity; import android.database.Cursor; import android.database.sqlite.SQLiteData

我的XML文件是

mydatabase适配器类是 包com.example.kern

  import android.os.Bundle;
 import android.provider.Contacts.People;
import android.app.Activity;
 import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class Second extends ListActivity {

DatabaseAdapter helper;
SQLiteDatabase db;
 private CursorAdapter dataSource;
 private static final String fields[] = { "Name", "Numb"};
 ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    helper=new DatabaseAdapter(this);
    helper.open();
    lv=(ListView)findViewById(android.R.id.list);

    Cursor data = db.query("Mycon", fields,null, null, null, null, null);


    dataSource = new SimpleCursorAdapter(this, 
            R.layout.activity_second, data, fields, 
            new int[] { R.id.name, R.id.number });

     lv.setAdapter(dataSource);
}

}
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.SQLException;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.util.Log;

 import com.example.kern.DatabaseAdapter;
 import com.example.kern.DatabaseAdapter.DatabaseHelper;

 public class DatabaseAdapter {

 DatabaseHelper helper;
    SQLiteDatabase db;
    static final int VERSION=2;
    static final String DATA_NAME="Mycontsc";
    private static final String query =  "create table Mycon(id Integer primary
       key,Name text,Numb text)";  //the query has been changed
    private final Context mCtx;


     public DatabaseAdapter(Context ctx) {
            this.mCtx = ctx;
        }

            //DatabaseHelper has become a subclass
    public class DatabaseHelper extends SQLiteOpenHelper {

        public DatabaseHelper(Context context) {
            super(context, DATA_NAME, null, VERSION);
                        // TODO Auto-generated constructor stub 
        } 

        @Override 
        public void onCreate(SQLiteDatabase arg0) {
            // TODO Auto-generated method stub 
            arg0.execSQL(query); 
        } 

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub

        }

    }

     public DatabaseAdapter open() throws SQLException {
         helper = new DatabaseHelper(mCtx);
            db=helper.getWritableDatabase();
                db=helper.getReadableDatabase();
            return this;
        }

      public void close() {
            helper.close();
        }

    public long AddDetail(String name,String num)
    { 
        ContentValues vals=new ContentValues();
        vals.put("Name",name);
        vals.put("Numb", num);
        long a=db.insert("Mycon", null, vals);
        return a;

    } 


       }
它在logcat中显示空指针异常

 09-18 10:32:02.631: E/AndroidRuntime(2286): FATAL EXCEPTION: main
 09-18 10:32:02.631: E/AndroidRuntime(2286): java.lang.RuntimeException: Unable to
 start activity ComponentInfo{com.example.kern/com.example.kern.Second}:
 java.lang.NullPointerException
09-18 10:32:02.631: E/AndroidRuntime(2286): Caused by: java.lang.NullPointerException
09-18 10:32:02.631: E/AndroidRuntime(2286):     at
com.example.kern.Second.onCreate(Second.java:29)
请检查程序并给我解决方案,它显示异常,alerady数据库中有值,我正在检索

Cursor data = db.query("Mycon", fields,null, null, null, null, null);
您尚未初始化
db
对象


看起来您已经有了初始化代码,即
DatabaseAdapter
中的
SQLiteOpenHelper
子类等等。在助手上调用
getReadableDatabase()
,以获取一个
SQLiteDatabase
对象,您可以在其上运行
query()

在第二行25的onCreate中,错误“是由以下原因引起的:java.lang.NullPointerException 09-18 09:19:53.171:E/AndroidRuntime(26528):at com.example.kern.Second.onCreate(Second.java:25)”。此时数据库是否实例化?请尝试
Second extends ListActivity
如果将活动更改为
ListActivity
(代码未显示),则内容必须具有id属性为“android.R.id.list”的ListView,您需要在布局文件中有一个具有此id的
ListView
。我应该将此“android.R.id.list”放在何处?请给我一些建议,我是新手android@NareshCherry在我的回答中检查我的编辑2已完成,但在logcat中显示异常,请检查我已编辑logcathow以初始化“db”请发送给我@laalto@NareshCherry更新答案。
Cursor data = db.query("Mycon", fields,null, null, null, null, null);