【问题标题】:How do I store listview of data from emulator into sqlite database?如何将模拟器中的数据列表视图存储到 sqlite 数据库中?
【发布时间】:2012-07-18 03:31:56
【问题描述】:

我需要将 ListView 的数据存储到 SQLite 数据库中。当我单击列表中的名称时,它应该存储到数据库中。我怎么做?我需要创建 DBAdapter 类吗? 请帮忙。

【问题讨论】:

    标签: android sqlite android-listview


    【解决方案1】:

    下面是DBAdapter,它包含了insert等有用的方法。我给你数据库结构。您可以在列表中添加一个监听器。尝试使用谷歌搜索 listview onClick 监听器。

    import java.util.ArrayList;
    
    import com.Test7.Tasks;
    
    import android.R.integer;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    public class DBAdapter {
    
    private Context context;
    private SQLiteDatabase notesdb;
    private DBHelper helper;
    
    public DBAdapter(Context context)
    {
        this.context = context;
        helper = new DBHelper(context);
    }
    
    public void open()
    {
        notesdb = helper.getWritableDatabase();
    }
    
    public void close()
    {
        notesdb.close();
    }
    
    public long insertTasks(Tasks tasks)
    {
        ContentValues values = new ContentValues();
        values.put(DBHelper.TASKS_TITLE, tasks.getTasksTitleString());
        return notesdb.insert(DBHelper.TABLE_NAME, null, values);
    }
    
    public long updateTask(Tasks tasks, int id)
    {
        ContentValues values = new ContentValues();
        values.put(DBHelper.TASKS_TITLE, tasks.getTasksTitleString());
        return notesdb.update(DBHelper.TABLE_NAME, values, DBHelper.TASKS_ID + "= ? ", 
                new String[] { String.valueOf(id) });
    }
    
    public ArrayList<Tasks> getAllTasks()
    {
        ArrayList<Tasks> tasks = new ArrayList<Tasks>();
        String[] columns = {DBHelper.TASKS_ID, DBHelper.TASKS_TITLE};
        Cursor cursor = notesdb.query(DBHelper.TABLE_NAME, columns, null, null, null, null, null);
        String tasksTitleString = "";
        int count = cursor.getCount();
        int id = 0;
        if(cursor != null && count > 0)
        {
            cursor.moveToFirst();
            for (int i = 0; i < count; i++) {
                id = cursor.getInt(cursor.getColumnIndex(DBHelper.TASKS_ID));
                tasksTitleString = cursor.getString(cursor.getColumnIndex(DBHelper.TASKS_TITLE));
                cursor.moveToNext();
            }
        }
        return tasks;
    }
    
    public int getID(Tasks tasks)
    {
        String[] columns = {DBHelper.TASKS_ID, DBHelper.TASKS_TITLE};
        Cursor cursor = notesdb.query(DBHelper.TABLE_NAME, columns, null, null, null, null, null);
        String tasksTitleString = "";
        int count = cursor.getCount();
        int id = 0;
        if(cursor != null && count > 0)
        {
            cursor.moveToFirst();
            for (int i = 0; i < count; i++) {
                id = cursor.getInt(cursor.getColumnIndex(DBHelper.TASKS_ID));
                tasksTitleString = cursor.getString(cursor.getColumnIndex(DBHelper.TASKS_TITLE));
                if(tasksTitleString.equals(tasks.getTasksTitleString()))
                {
                    return id;
                }
                cursor.moveToNext();
            }
        }
        return id;
    }
        }
    

    使用以下类来构建您的数据库。尝试为您的数据库创建 POJO。我的跟随。

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    public class DBHelper extends SQLiteOpenHelper {
    
    public static final String DB_NAME = "tasksdb8";
    public static final String TABLE_NAME = "tasks";
    public static final String TASKS_ID = "_id";
    public static final String TASKS_TITLE = "title";
    
    private static String CREATE_TABLE_SQL = "Create table "
            + DBHelper.TABLE_NAME + " ( " + DBHelper.TASKS_ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, " + DBHelper.TASKS_TITLE
            + " TEXT);";
    
    public DBHelper(Context context)
    {
        super(context, DBHelper.DB_NAME, null, 1);
    }
    
    @Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(DBHelper.CREATE_TABLE_SQL);
        Log.d("DBHelper", "Table Created: " + DBHelper.CREATE_TABLE_SQL);
    }
    
    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub
    
    }
    
    }
    

    这是我的 POJO:

    public class Tasks {
    
    private String tasksTitleString;
    private int id;
    
    public Tasks(String tasksTitleString, int id) {
        super();
        this.tasksTitleString = tasksTitleString;
        this.id = id;
    }
    
    public Tasks(String tasksTitleString) {
        super();
        this.tasksTitleString = tasksTitleString;
    }
    
    public String getTasksTitleString() {
        return tasksTitleString;
    }
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    
    public String isTasksCompleted() {
        return tasksCompleted;
    }
    
    public void setTasksCompleted(String tasksCompleted) {
        this.tasksCompleted = tasksCompleted;
    }
    
    }
    

    【讨论】:

    • 我可以知道什么是 POJO 吗?我以前从未听说过并使用过它。
    • 我知道你不能把它记下来,别人做了,很高兴知道为什么。 POJO 是普通的旧 java 对象。你必须创建一个列表视图,一切就绪,我已经给了你几乎所有的东西。
    猜你喜欢
    • 2012-07-17
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多