Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法获取:在android中从SQLITE数据库填充listview_Android_Sqlite_Android Listview - Fatal编程技术网

无法获取:在android中从SQLITE数据库填充listview

无法获取:在android中从SQLITE数据库填充listview,android,sqlite,android-listview,Android,Sqlite,Android Listview,一周以来,我一直在努力从数据库中填充android中的listview,但遇到了大问题,请告诉我,如果有人能帮忙,我会很高兴 //databasehelper类 package com.example; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class Datab

一周以来,我一直在努力从数据库中填充android中的listview,但遇到了大问题,请告诉我,如果有人能帮忙,我会很高兴 //databasehelper类

package com.example;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{
 public static final String DBNAME = "company.db";    
  public static final String ENAME="ename";
  public static final String ADD="addr";
  public static final String PNO="pno";
  public static final String FA="fa";
  public static final String tablename="company";


  public DatabaseHelper(Context context) {
        super(context, DBNAME, null, 1);
        // TODO Auto-generated constructor stub
    }
@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("CREATE TABLE company (_ID INTEGER PRIMARY KEY AUTOINCREMENT,ename TEXT,addr TEXT,pno TEXT,fa TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP IF TABLE EXISTS company");
    onCreate(db);
}
}
//这是我试图填充listview的类 包com.example

import java.util.ArrayList;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class Text extends ListActivity {
private ArrayList<String> results = new ArrayList<String>();
private String tableName = DatabaseHelper.tablename;
private SQLiteDatabase newDB;

@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       openAndQueryDatabase();

        displayResultList();
}

private void displayResultList() {
    // TODO Auto-generated method stub
    TextView tView = new TextView(this);
    tView.setText("This data is retrieved from the database and only 4 " +
            "of the results are displayed");
    getListView().addHeaderView(tView);

    setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_2, results));
    getListView().setTextFilterEnabled(true);
}

private void openAndQueryDatabase() {
    // TODO Auto-generated method stub
    try {
DatabaseHelper dbHelper = new     DatabaseHelper(this.getApplicationContext());

        newDB = dbHelper.getWritableDatabase();
        Cursor c = newDB.rawQuery("SELECT ENAME, PNO  FROM " +
                tableName, null);

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String ename = c.getString(c.getColumnIndex("ENAME"));
                    String addr = c.getString(c.getColumnIndex("PNO"));
                    results.add("Name: " + ename + ",Age: " + addr);
                }while (c.moveToNext());
            } 
        }           
    } catch (SQLiteException se ) {
        Log.e(getClass().getSimpleName(), "Could not create or Open the database");
    } finally {
        if (newDB != null) 
            newDB.execSQL("DELETE FROM " + tableName);
            newDB.close();
    }

}
}
import java.util.ArrayList;
导入android.app.ListActivity;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteException;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类文本扩展ListActivity{
private ArrayList results=new ArrayList();
私有字符串tableName=DatabaseHelper.tableName;
私有sqlitedatabasenewdb;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
openAndQueryDatabase();
displayResultList();
}
私有void显示结果列表(){
//TODO自动生成的方法存根
TextView tView=新的TextView(此);
setText(“此数据从数据库中检索,仅4个”+
“显示结果的百分比”);
getListView().addHeaderView(tView);
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_2,results));
getListView().setTextFilterEnabled(true);
}
私有void openAndQueryDatabase(){
//TODO自动生成的方法存根
试一试{
DatabaseHelper dbHelper=新的DatabaseHelper(this.getApplicationContext());
newDB=dbHelper.getWritableDatabase();
游标c=newDB.rawQuery(“从中选择ENAME、PNO”+
tableName,null);
如果(c!=null){
if(c.moveToFirst()){
做{
字符串ename=c.getString(c.getColumnIndex(“ename”);
stringaddr=c.getString(c.getColumnIndex(“PNO”);
结果。添加(“姓名:+ename+”,年龄:+addr);
}而(c.moveToNext());
} 
}           
}catch(sqlitese异常){
Log.e(getClass().getSimpleName(),“无法创建或打开数据库”);
}最后{
if(newDB!=null)
newDB.execSQL(“从“+tableName”中删除);
newDB.close();
}
}
}

您不需要向数据库中添加任何内容。您没有执行任何
insert
调用来填充数据库。因此,当您执行查询时,返回的是一个空光标。因此,您的
结果中不会添加任何内容。这就是为什么您认为listview是空的

您面临的错误或问题是什么?