java - 插入日期和时间

标签 java android sqlite

我正在尝试将日期选择器和时间选择器中的值插入我的 sqlite 数据库中。我已将日期和时间存储在对象变量中,然后调用 DBhandler 类中的方法以通过 contentvalue 对象插入它们。

现在我失败的地方是实际的插入和数据类型。

我在“timeApp”和“dateApp”的以下代码中遇到错误,我将这些变量作为 DATE 和 TIME 变量传递给 createAppointmentEntry' 方法。:

错误消息:

 The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Time)

解决发生错误的方法:

public void createAppointmentEntry(String nameApp, String typeApp, Time timeApp, Date dateApp ,String commentApp, Boolean onOrOff) {



        ContentValues cv = new ContentValues();
        cv.put(KEY_NAMEAPP, nameApp);
        cv.put(KEY_TYPEAPP, typeApp);

                    //ERROR on the following two 'puts'
        cv.put(KEY_TIMEAPP, timeApp);
        cv.put(KEY_DATEAPP, dateApp);

        cv.put(KEY_COMMENTAPP, commentApp);
        cv.put(KEY_ALARM, onOrOff);
        ourDatabase.insert(DATABASE_TABLE, null, cv);

这是我的数据库列:

    public static final String KEY_ROWAPPID = "_appid";
public static final String KEY_NAMEAPP = "app_name";
public static final String KEY_TYPEAPP = "app_type";
public static final String KEY_TIMEAPP = "app_time";
public static final String KEY_DATEAPP = "app_date";
public static final String KEY_COMMENTAPP = "app_comments";
public static final String KEY_ALARM = "app_alarm";

我的onCreate方法:

db.execSQL("CREATE TABLE " + DATABASE_TABLEAPP + " (" +
            KEY_ROWAPPID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_NAMEAPP + " TEXT NOT NULL, " +
                KEY_TYPEAPP + " TEXT NOT NULL, " +
                KEY_TIMEAPP + " TEXT NOT NULL, " +
                KEY_DATEAPP + " TEXT NOT NULL, " +
                KEY_COMMENTAPP + " TEXT NOT NULL, " +
                KEY_ALARM + "BOOLEAN NOT NULL);"

                );

这是我如何设置时间和日期对象变量:

    Date setDate = new Date(dobYear - 1900, dobMonth, dobDate);


Time timeToSet = new Time();
timeToSet.set(0, dobMinute, dobHour);

最佳答案

从编译错误和ContentValues的API来看,ContentValues似乎只支持原始类型、Stringbyte []。因此,尝试替换:

//ERROR on the following two 'puts'
 cv.put(KEY_TIMEAPP, timeApp);
 cv.put(KEY_DATEAPP, dateApp);

与:

 cv.put(KEY_TIMEAPP, timeApp.toString());
 cv.put(KEY_DATEAPP, dateApp.toString());

您可以使用格式化程序将时间日期格式化为标准字符串,以便能够解析它。

关于java - 插入日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426088/

相关文章:

android - 为什么在 firebase onAuthStateChanged 中完成 Activity 时最近的应用程序中没有屏幕截图

c - 使用 libsqlite3 的间歇性段错误, "error 4 in libsqlite3.so.0.8.6"

c++ - 使用 Qt 和 SQLite 数据库的并发

java - UML 类图和泛型

java正则表达式: conditionally spilt string by capital letters

java - 为 Spring Boot 应用程序构建 UI

java - 在运行时重写 SpringBootJar 类

android - Beta 版到生产版

针对不同屏幕尺寸的 Android 布局

python - 当 sqlite3 数据库写入中断时会发生什么?