我是Android编程的新手,刚刚设法构建了一个有效的sqlite数据库。
但是当数据输入不正确时,例如进入“有效期限”部分,要求用户以YYYY / MM / DD格式输入,如果输入错误,程序将崩溃。有没有办法拒绝添加到数据库中的信息,避免崩溃?
以下是设置数据库并输入相应列的代码
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " (" + COL_1 + " INTEGER PRIMARY KEY," + COL_2 + " TEXT," + COL_3 + " DATE," + COL_4 + " DATE" + ")");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean insertData(String Name, String Datereceived, String Expirydate) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, Name);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
contentValues.put(COL_3, dateFormat.format(new Date(Datereceived)));
contentValues.put(COL_3, Datereceived);
contentValues.put(COL_4, dateFormat.format(new Date(Expirydate)));
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
这是更新数据库的代码
public void UpdateData() {
btnviewUpdate.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isUpdate = myDb.updateData(editTextId.getText().toString(), editname.getText().toString(),
editdate.getText().toString(), editexpiry.getText().toString());
if (isUpdate == true)
Toast.makeText(DatabaseUpdater.this, "Data updated", Toast.LENGTH_LONG).show();
else
Toast.makeText(DatabaseUpdater.this, "Data not updated", Toast.LENGTH_LONG).show();
}
}
);
}
答案 0 :(得分:1)
你可以这样做:
public boolean insertData(String Name, String Datereceived, String Expirydate) {
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, Name);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
contentValues.put(COL_3, dateFormat.format(new Date(Datereceived)));
contentValues.put(COL_3, Datereceived);
contentValues.put(COL_4, dateFormat.format(new Date(Expirydate)));
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
} catch(Exception x) {
return false;
}
不是很好,但你可以从那开始。
答案 1 :(得分:1)
在将值放入数据库检查之前做一件事是否是有效日期,如果数据有效或插入一些虚拟值,可以插入数据。使用以下代码检查其有效日期
public static boolean isValidFormat(String format, String value) {
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(value);
if (!value.equals(sdf.format(date))) {
date = null;
}
} catch (ParseException ex) {
ex.printStackTrace();
}
return date != null;
}
更多日期有效性检查尝试此链接 - Java: Check the date format of current string is according to required format or not