这不是一个错误,而是一个问题。 我没有收到任何错误,也没有应用程序崩溃。一切正常,但是当我将数据库下载到我的PC并使用KiSQLite访问它时,我在表中插入的日期显示为"无效的日期"。 我试过两种方法: 1.
public void SaveInfo(String value){
SQLiteDatabase mDatabase = new myDbHelper(getApplicationContext()).getWritableDatabase();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dt = dateFormat.format(date);
mDatabase.execSQL("insert into mytableinfo(datakm,km) values ('"+dt+"',"+value+")");
mDatabase.close();
}
2
public void SaveInfo(String value){
SQLiteDatabase mDatabase = new myDbHelper(getApplicationContext()).getWritableDatabase();
mDatabase.execSQL("insert into mytableinfo(datakm,km) values (datetime(),"+value+")");
mDatabase.close();
}
我想要做的就是在该表中插入一条记录,其日期为今天(现在)和另一个值。
我该怎么办? 这两种方法似乎都插入了无效的日期值......
请帮忙 谢谢
修改 这是我的表格声明
sqlu = "CREATE TABLE IF NOT EXISTS " + TABLE_PARCURS + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
PARC_DATA + " DATE NOT NULL, " +
PARC_KM + " TEXT) ";
Log.e("CREATE tbl:", sqlu);
db.execSQL(sqlu);
是不是错了?我应该将日期声明为TEXT而不是DATE吗?
答案 0 :(得分:0)
试试这个
String mydate = dateFormat.format(Calendar.getInstance().getTime());
答案 1 :(得分:0)
我不能告诉你的代码有什么问题,但你可能会像我一样。
ContentValues newValues = new ContentValues();
// Assign values for each row.
newValues.put(Constants.EVENT_TYPE_ID, event.getEvent_type_id().getId());
newValues.put(Constants.EVENT_TITLE, event.getEvent_title());
newValues.put(Constants.EVENT_TEXT, event.getEvent_text());
newValues.put(Constants.EVENT_DATE, event.getEvent_date());
newValues.put(Constants.CREATE_DATE, event.getCreate_date());
newValues.put(Constants.EVENT_PIC, event.getEvent_pic());
newValues.put(Constants.EVENT_DISPLAY_DATE, event.getDisplay_date());
newValues.put(Constants.EVENT_INTERVAL, 0.0);
newValues.put(Constants.EVENT_SONG, "");
newValues.put(Constants.EVENT_VIDEO, "");
long numOfCulm = myDataBase.insert(Constants.TABLE_EVENTS, null, newValues);
常量 - 是我保存所有键的类。
答案 2 :(得分:0)
看起来我的问题的解决方案是将日期字段声明为TEXT并在字段中插入格式化日期。显然,如果我这样做,SQLite / Android会将TEXT字段视为DATE。
因此,表声明将是:
sqlu = "CREATE TABLE IF NOT EXISTS " + TABLE_PARCURS + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
PARC_DATA + " TEXT NOT NULL, " + // <-- here is what I changed
PARC_KM + " TEXT) ";
Log.e("CREATE tbl:", sqlu);
db.execSQL(sqlu);
插入代码将是相同的(具有格式化日期)
稍后我可以使用DATE utils(如
)查询表SELECT * FROM table where date(datakm)=date(datetime())
(这将返回表中当前日期在datakm字段中的所有行)
基本上,我的问题已经解决了。 谢谢你的时间,但我自己找到了解决方案。我写了解决方案作为答案,以便其他有此问题的开发人员可以解决他们的问题。 祝你好运