繁体   English   中英

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

[英]How to pass parameter to onOpen() function using SQLiteOpenHelper

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

我以这种方式进行:

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

     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()。

谢谢

所以我想知道如何将参数传递给onCreate()函数以将用户输入添加到数据库中?

你不知道 您可以使用getWritableDatabase()返回的SQLiteDatabase将用户输入添加到数据库中。

另外,请在后台线程上执行数据库I / O; 您当前的代码正在主应用程序线程上执行此操作,从而在进行I / O操作时冻结了UI。

在任何有关Android应用程序开发的体面的书或课程中都涵盖了这两个主题。

您不会将用户输入传递给onOpen 您将其添加到在onCreate创建的数据库的表中。 然后,您将使用:

ContentValues values = new ContentValues()
values.put(COLUMN_TASK, task);
// Add any more columns here

access.getWritableDatabase().insert(TABLE_NAME, null, values);

详情请看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM