我正在尝试创建待办事项列表。为此,我需要将用户的任务存储在数据库中。为此,我选择使用SQLiteOpenHelper。
我这样做:
将用户输入存储在数据库中----->不知道那样做。
String task = String.valueOf(taskEditText.getText());
DatabaseHandler access = new DatabaseHandler(getApplication());
access.getWritableDatabase();
创建数据库(该函数是@Override但无法正确格式化)
public class DatabaseHandler extends SQLiteOpenHelper {
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "===Inside onCreate from DatabaseHandler===");
String database_table = "CREATE TABLE task(ID INT NOT NULL, TASK CHAR(25), STATE CHAR(25))";
db.execSQL(database_table);
}
}
如您所见,我使用.getText()函数获取用户的输入。 然后我使用.getWritableDatabase()启动onCreate()函数 最后,在打开数据库时会自动调用onOpen(SQLiteDatabase db)。但是我无法修改函数的原型,即使我可以,我也不知道如何将参数传递给它。 (假设有可能)。
所以我想知道如何将参数传递给onOpen()函数以将用户的输入添加到我的数据库中?
编辑:
我最初的问题是知道如何将参数传递给onCreate()函数。但我意识到我想传递给onOpen()函数而不是onCreate()。
由于
答案 0 :(得分:1)
所以我想知道如何将参数传递给onCreate()函数以将用户的输入添加到我的数据库中?
你不是。您使用SQLiteDatabase
返回的getWritableDatabase()
将您的用户输入添加到数据库。
另外,请在后台线程上进行数据库I / O操作;您当前的代码在主应用程序线程上执行此操作,在I / O正在进行时冻结UI。
关于Android应用开发的任何体面的书籍或课程都涵盖了这两个主题。
答案 1 :(得分:1)
您不会将用户输入传递给onOpen
。您将它添加到您在onCreate
中创建的数据库中的表中。然后你会使用:
ContentValues values = new ContentValues()
values.put(COLUMN_TASK, task);
// Add any more columns here
access.getWritableDatabase().insert(TABLE_NAME, null, values);
有关详细信息,请参阅here