在Listview中显示来自SQLite的数据

时间:2015-09-28 03:03:35

标签: android sqlite listview

我在编程方面不是很好,我需要你的帮助。我只能在textview中显示数据。它只显示数据库SQLite中的最后一个数据。

这是我的databasehelper

public class DatabaseHelper extends SQLiteOpenHelper {
private static String DB_PATH = "/data/data/com.example.jathniel.myapplication/databases/";
private static String DB_NAME = "example.sqlite";
private SQLiteDatabase myDataBase;
private Context myContext = null;

public DatabaseHelper(Context context) {
    super(context, DB_NAME, (SQLiteDatabase.CursorFactory) null, 1);
    this.myContext = context;
}

public void createDataBase() throws IOException {
    boolean dbExist = this.checkDataBase();
    if(!dbExist) {
        this.getReadableDatabase();

        try {
            this.copyDataBase();
        } catch (IOException var3) {
            throw new Error("Error");
        }
    }

}

public void copyDataBase() throws IOException {
    InputStream myInput = this.myContext.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    FileOutputStream myOutput = new FileOutputStream(outFileName);
    byte[] buffer = new byte[1024];

    int length;
    while((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }

    myOutput.flush();
    myOutput.close();
    myInput.close();
}

public boolean checkDataBase() {
    SQLiteDatabase checkDB = null;

    try {
        String e = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(e, (SQLiteDatabase.CursorFactory)null, 0);
    } catch (SQLiteException var3) {
        ;
    }

    if(checkDB != null) {
        checkDB.close();
    }

    return checkDB != null;
}

public void openDataBase() throws SQLException {
    String myPath = DB_PATH + DB_NAME;
    this.myDataBase = SQLiteDatabase.openDatabase(myPath, (SQLiteDatabase.CursorFactory)null, 0);
}

public synchronized void close() {
    if(this.myDataBase != null) {
        this.myDataBase.close();
    }

    super.close();
}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}


public void createDatabase() {
}

这是dataDB

public class DataDB {
DatabaseHelper con;
String name,lastname;

public DataDB() {
}

public String getNameDB(Context context) throws SQLException {
    this.con = new DatabaseHelper(context);

    try {
        this.con.createDataBase();
    } catch (IOException var4) {
        ;
    }

    if (!this.con.checkDataBase()) {
        return "ERROR";
    } else {
        this.con.openDataBase();
        SQLiteDatabase db = this.con.getWritableDatabase();

        for (Cursor cursor = db.rawQuery("SELECT name FROM exampleTable", (String[]) null); cursor.moveToNext(); this.name = cursor.getString(0)) {

        }

        this.con.close();
        return this.name;


    }

}
public String getLNameDB(Context context) throws SQLException {
    this.con = new DatabaseHelper(context);

    try {
        this.con.createDataBase();
    } catch (IOException var4) {
        ;
    }

    if(!this.con.checkDataBase()) {
        return "ERROR";
    } else {
        this.con.openDataBase();
        SQLiteDatabase db = this.con.getWritableDatabase();

        for (Cursor cursor = db.rawQuery("SELECT lastname FROM exampleTable", (String[]) null); cursor.moveToNext(); this.lastname = cursor.getString(0)) {

        }


        this.con.close();
        return this.lastname;
    }
    }

我有一项主要活动

public class MainActivity extends Activity {
DataDB data = new DataDB();
ListView list;
ArrayAdapter<String> listAdapter;

public MainActivity() {
}

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    list = (ListView) findViewById(R.id.listView);


    ArrayList<String> name = new ArrayList<String>();
    listAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, name);



     try {
           listAdapter.add(data.getNameDB(this));
       } catch (SQLException e) {
           e.printStackTrace();
     }

}

1 个答案:

答案 0 :(得分:0)

我认为你应该改变

this.name = cursor.getString(0)

this.name += cursor.getString(0)

如果要在ListView中显示数据库中的所有名称,请按this tutorial。 正如您在教程中看到的,您需要创建一个像这样的数组名称

ArrayList<String> name = new ArrayList();

而不是String name;

将数据添加到数组列表:

for (Cursor cursor = db.rawQuery("SELECT lastname FROM exampleTable", (String[]) null); cursor.moveToNext(); this.name.add(cursor.getString(0))) {

希望这个帮助