建立了一个用户表,实现了注册功能,想在一个activity中把用户表的内容用列表的形式显示出来,应该怎么实现??
下面是我写好的类。
DatabaseHelper类:public class DatabaseHelper extends SQLiteOpenHelper {
static String name="user.db";
static int dbVersion=1;
public static final String TBL_NAME = "UserTbl";
public static final String COLUMN_NAME = "username";
public static final String COLUMN_PASS = "password";
public DatabaseHelper(Context context) {
super(context, name, null, dbVersion);
}
//只在创建的时候用一次
public void onCreate(SQLiteDatabase db) {
String sql="create table user(id integer primary key autoincrement,username varchar(20),password varchar(20))";
db.execSQL(sql);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}User类:public class User implements Serializable{
private int id;
private String username;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password, int age, String sex) {
super();
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + "]";
}

}UserService类:public class UserService {
private DatabaseHelper dbHelper;
public UserService(Context context){
dbHelper=new DatabaseHelper(context);
}

//登录用
public boolean login(String username,String password){
SQLiteDatabase sdb=dbHelper.getReadableDatabase();
String sql="select * from user where username=? and password=?";
Cursor cursor=sdb.rawQuery(sql, new String[]{username,password});
if(cursor.moveToFirst()==true){
cursor.close();
return true;
}
return false;
}
//注册用
public boolean register(User user){
SQLiteDatabase sdb=dbHelper.getReadableDatabase();
String sql="insert into user(username,password) values(?,?)";
Object obj[]={user.getUsername(),user.getPassword()};
sdb.execSQL(sql, obj);
return true;
}
}
AndroidSQLite数据库

解决方案 »

  1.   

    用listView啊
    从数据库中拿出Cursor,然后把user放到list里。
      

  2.   


    我是这样写的,但会崩溃,哪出错了??public class UserList extends ListActivity {

        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            this.setTitle("用户列表");  
            final DatabaseHelper dbhelper = new DatabaseHelper(this);  
            Cursor c = dbhelper.query();  
            String[] from = { "username", "password" };  
            int[] to = { R.id.text4, R.id.text5};  
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,  
             R.layout.row, c, from, to);  
            ListView listView = getListView();  
            listView.setAdapter(adapter);  }
         }
      

  3.   

    最好把错误信息发一下。试着自己看一下错误信息。
    我一般喜欢自己定义adapter和listview,觉得用android提供的listactivity很局限。
      

  4.   

    可以参考一下我的code代码    我没有继承ListActivity   不想基于我的  那就需要具体FC LOG日志package com.tarena.android.db;import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.text.TextUtils;
    import android.util.Log;import com.tarena.android.entity.Airport;public class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context){
    super(context,"t3gabs_db",null,1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String str="create table airport(_id integer primary key autoincrement," +
    " airport_city text, airport_name text,airport_code text)";
    db.execSQL(str);
    TextUtils.isEmpty(str);
    Log.i("DB_Log","create table airport!");
    } @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

    }

    public Cursor select(){
    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor=db.query("airport", null, null, null, null, null, null);
    return cursor;
    }

    public void insert(Airport airport){
    SQLiteDatabase db=this.getWritableDatabase();

    ContentValues cv=new ContentValues();
    cv.put("_id", airport.getId());
    cv.put("airport_city", airport.getCity());
    cv.put("airport_name", airport.getName());
    cv.put("airport_code", airport.getCode());

    Log.i("DB_Log","insert data ok!");
    }

    public void delete(int id){
    SQLiteDatabase db=this.getWritableDatabase();

    db.delete("airport", "id = ?", new String[]{id+""});
    Log.i("DB_Log", "delete one row OK!");
    }

    public void deleteAll(){
    SQLiteDatabase db=this.getWritableDatabase();
    db.delete("airport", null, null);
    Log.i("DC_Log", "delete all data ok!");
    }}package com.tarena.android;import android.app.Activity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.widget.TextView;import com.tarena.android.db.DatabaseHelper;public class AirportReadFromDBActivity extends Activity{
    private TextView tv;
    private ListView lv;
    private DatabaseHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.airport_list);

    dbHelper=new DatabaseHelper(this);
    tv=(TextView)findViewById(R.id.airport_version_tv);
    lv=(ListView)findViewById(R.id.airport_list_view);

    int version=dbHelper.getReadableDatabase().getVersion();
    tv.setText("當前機場數據版本是:"+version);

    Cursor cursor=dbHelper.select();

    SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.airport_list_item,cursor,
    new String[]{"_id","airport_city","airport_name","airport_code"},
    new int[]{R.id.airport_id_tv,R.id.airport_city_tv,R.id.airport_name_tv,R.id.airport_code_tv});

    lv.setAdapter(adapter);

    }
    }布局xml如下
    //airport_list.xml<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="以下是所有機場列表:"
      android:id="@+id/airport_version_tv"
      />
      <ListView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/airport_list_view"
      />
    </LinearLayout>
    //airport_list_item.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="["
      />  
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/airport_id_tv"
      />
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="]  "
      /> 
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/airport_city_tv"
      />
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="--"
      /> 
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/airport_name_tv"
      />
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="機場 ("
      /> 
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/airport_code_tv"
      />
      <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text=")"
      /> 
    </LinearLayout>
    至于AndroidMainFest.xml 声明相应的Activity 就不需要贴了吧   LZ懂的
      

  5.   

    请打断点调试看看是哪一步出的问题,或者把LOG发出来看看,sqlite操作网上一大把的,找个例子比较一下就知道了