Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入日期和时间_Java_Android_Sqlite - Fatal编程技术网

Java 插入日期和时间

Java 插入日期和时间,java,android,sqlite,Java,Android,Sqlite,我正在尝试在sqlite数据库中插入日期选择器和时间选择器中的值。我已经将日期和时间存储在对象变量中,然后在DBhandler类中调用一个方法,通过contentvalue对象插入它们 现在我失败的地方是实际的插入和数据类型 “timeApp”和“dateApp”的以下代码出错。我将这些变量作为日期和时间变量传递给createAppointmentEntry”方法: 错误消息: The method put(String, String) in the type ContentValues i

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

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

“timeApp”和“dateApp”的以下代码出错。我将这些变量作为日期和时间变量传递给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);
以下是我的DB列:

    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);

我猜是什么,但我不确定
键\u报警+“布尔值不为空”);“
您在create语句中遗漏了一个空格。尝试删除它,然后用空白重新创建它

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);"
键\u报警+“布尔值不为空”);“
昨天也犯了同样的错误。 如果您编写了一个Helperclass,只需更改
数据库的版本
,否则调用
db.execSQL(“DROP TABLE if EXISTS”+数据库TABLEAPP)
例如,Helper类会调用它

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.w(MySQLiteHelper.class.getName(),
            "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLEAPP);
    onCreate(db); //recreate 
}

自动使用新语句重新创建数据库。

从编译错误和
ContentValues
的API判断,
ContentValues
似乎只支持原语类型、
String
byte[]
。因此,尝试替换:

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


您可以使用formatter将
时间
日期
格式化为标准的
字符串
,以便能够对其进行解析。

谢谢您的回复,但由于我不确定在日期和时间字段上使用的正确数据类型,我已经在物理上插入了数据。是否可以尝试使用日期<代码>日期-格式YYYY-MM-DD
不确定这是否有帮助。看看
 cv.put(KEY_TIMEAPP, timeApp.toString());
 cv.put(KEY_DATEAPP, dateApp.toString());