如何使用SQLiteOpenHelper将参数传递给onOpen()函数

时间:2017-01-28 19:09:11

标签: java android

我正在尝试创建待办事项列表。为此,我需要将用户的任务存储在数据库中。为此,我选择使用SQLiteOpenHelper。

我这样做:

  1. 获取用户输入
  2. 使用getWritableDatabase()+ onCreate()函数
  3. 创建数据库
  4. 将用户输入存储在数据库中----->不知道那样做。

    String task = String.valueOf(taskEditText.getText());
    DatabaseHandler access = new DatabaseHandler(getApplication());
    access.getWritableDatabase();
    
  5. 创建数据库(该函数是@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()。

    由于

2 个答案:

答案 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