Android 如何在文本视图中显示数据库信息?

Android 如何在文本视图中显示数据库信息?,android,sqlite,Android,Sqlite,我能把数据输入数据库。单击“显示”时,我不会显示它。我错过了什么?我得到一个错误,即无法将所有列解析为displayCourse文件中的变量。我在courseDataSource文件中声明了它。我对这个程序还不熟悉,所以我可能会漏掉一些东西。我只是不知道那是什么 displayCourse.java package com.greygoosefarmpa.fencecoursebuilder; import java.util.ArrayList; import java.util.List;

我能把数据输入数据库。单击“显示”时,我不会显示它。我错过了什么?我得到一个错误,即无法将所有列解析为displayCourse文件中的变量。我在courseDataSource文件中声明了它。我对这个程序还不熟悉,所以我可能会漏掉一些东西。我只是不知道那是什么

displayCourse.java

package com.greygoosefarmpa.fencecoursebuilder;
import java.util.ArrayList;
import java.util.List;

import com.google.android.maps.MapActivity;
import com.greygoosefarmpa.db.courseDBOpenHelper;
import com.greygoosefarmpa.db.courseDataSource;
import com.greygoosefarmpa.model.Course;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.TextView;


public class displayCourse extends MapActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.displaycourse);

//TextView dc = (TextView) findViewById(R.id.displayCourses);

courseDataSource datasource = new courseDataSource(this);
datasource.open();

List<Course> course = datasource.findAll();

ArrayAdapter<Course> adapter = new ArrayAdapter<Course>   (this,android.R.layout.simple_list_item_1, course);
setListAdapter(adapter);



datasource.close();
public class Course {
private long courseid;
private String coursename;
private String fencename;
private String Alocation;
private String Blocation;


public long getcourseid(){
    return courseid;
}

public void setcourseid(long courseid) {
    this.courseid = courseid;
}

public String getcoursename(){
    return coursename;
}

public void setcoursename(String string){
    this.coursename = string;
}

public String getfencename(){
    return fencename;
}

public void setfencename(String fencename){
    this.fencename = fencename;
}

public String getAlocation(){
    return Alocation;
}

public void setAlocation(String string){
    this.Alocation = string;
}

public String getBlocation(){
    return Blocation;
}

public void setBlocation(String string){
    this.Blocation = string;
}


}
courseDBOpenHelper.java

public class courseDBOpenHelper extends SQLiteOpenHelper {

private static final String LOGTAG = "courseDatabase";

private static final String DATABASE_NAME = "courses.db";
private static final int DATABASE_VERSION = 1;

public static final String TABLE_COURSES = "courses";
public static final String COLUMN_ID = "coursesID";
public static final String COLUMN_COURSENAME = "coursename";
public static final String COLUMN_FENCENAME = "fencename";
public static final String COLUMN_ALOCATION = "alocation";
public static final String COLUMN_BLOCATION = "blocation";

private static final String TABLE_CREATE = 
        "CREATE TABLE " + TABLE_COURSES + " (" +
        COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        COLUMN_COURSENAME + " TEXT, " +
        COLUMN_FENCENAME + " TEXT, " +
        COLUMN_ALOCATION + " NUMERIC, " +
        COLUMN_BLOCATION +  " NUMBERIC " +
        ")";

public courseDBOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(TABLE_CREATE);
    Log.i(LOGTAG, "table created");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS" + TABLE_COURSES);
    onCreate(db);

}

}

能够从数据库中获取数据并在文本视图中显示。

我能看见你的眼睛

TextView dc=(TextView)findViewById(R.id.displayCourses)

应该可以在TextView中显示数据记录

[...]
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.displaycourse);

TextView dc = (TextView) findViewById(R.id.displayCourses);

courseDataSource datasource = new courseDataSource(this);
datasource.open();

Cursor cursor = database.query(courseDBOpenHelper.TABLE_COURSES,
                               null, null, null, null, null, null);
Log.i(courseDBOpenHelper.LOGTAG, "returned " + Integer.toString(cursor.getCount()) + " rows");
    if (cursor.getCount() > 0) {
        while (cursor.moveToNext()) {     
        String coursename = cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_COURSENAME));
        dc.append("Name: ");
        dc.append(coursename);
        dc.append("\n");
        // more content
        }
    }

[...]
编辑
将所有
a位置
替换为
a位置

将所有
bloocation
替换为
bloocation

替换
Log.i(LOGTAG,“returned”…)

Log.i(courseDBOpenHelper.LOGTAG,“返回”…)

替换
private static final String LOGTAG=“courseDatabase”带有
公共静态最终字符串LOGTAG=“courseDatabase”并将其放入您的
类courseDBOpenHelper公共静态最终字符串
部分

替换
Log.i(LOGTAG,“returned”+cursor.getCount()+“rows”)

Log.i(courseDBOpenHelper.LOGTAG,“返回”+Integer.toString(cursor.getCount())+“行”)

我们无法看到
所有列
因此

替换
所有列

database.query(courseDBOpenHelper.TABLE_COURSES,allColumns,null,…)
使用
null

database.query(courseDBOpenHelper.TABLE_COURSES,null,null,…)

看一看




我仍然缺少一些内容,因为它无法识别courseDataSource文件中的所有列和日志标记…我无法运行它,因为Cursor Cursor=datasource.query(courseDBOpenHelper.TABLE_COURSES,allColumns,null,null,null,null)出现错误;i(LOGTAG,“returned”+cursor.getCount()+“rows”);错误:无法解析为变量,这一事实对我们不重要吗?为什么我们现在才得到这些重要信息?Let
Log.i(LOGTAG,“returned”+cursor.getCount()+“rows”)暂时离开。好吧,我把它注释掉了,这行呢。。。Cursor Cursor=datasource.query(courseDBOpenHelper.TABLE_COURSES,allColumns,null,null,null,null);它不像allColumns那样做了更改,allColumns仍然不能作为变量解析。但我在数据源文件中声明了它。我错过了连接,你走了多远?我的回答对你有帮助吗?
[...]
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.displaycourse);

TextView dc = (TextView) findViewById(R.id.displayCourses);

courseDataSource datasource = new courseDataSource(this);
datasource.open();

Cursor cursor = database.query(courseDBOpenHelper.TABLE_COURSES,
                               null, null, null, null, null, null);
Log.i(courseDBOpenHelper.LOGTAG, "returned " + Integer.toString(cursor.getCount()) + " rows");
    if (cursor.getCount() > 0) {
        while (cursor.moveToNext()) {     
        String coursename = cursor.getString(cursor.getColumnIndex(courseDBOpenHelper.COLUMN_COURSENAME));
        dc.append("Name: ");
        dc.append(coursename);
        dc.append("\n");
        // more content
        }
    }

[...]