我們都知道SQLite是不允許插入空行的,但是很多時候我們對于插入的數據是不知道的,其中可能就會有沒有值,然后就造成空行,那么我們如何判斷呢?很多人說只要我們將得到的數據重新整理一遍就好了,一旦為空就給他賦值,我也是這么想的,結果悲劇了,下面直接出代碼:
public URLTableData setUrlTableData(URLTableData urlTableData){
if(urlTableData.getUrl().length()<=0){
urlTableData.setUrl("該鏈接不存在");
}
if(urlTableData.getWho().equals(null)){
urlTableData.setWho("佚名");
}
if(urlTableData.getDesc().equals(null)){
urlTableData.setDesc("不存在");
}
if(urlTableData.getCreatedAt().toString().length()<=0){
urlTableData.setCreatedAt(null);
}
return urlTableData;
}
public ContentValues CreatParms(URLTableData urlTableData) {
setUrlTableData(urlTableData);
ContentValues _ContentValues = new ContentValues();
_ContentValues.put("URLValue",urlTableData.getUrl());
_ContentValues.put("URLCreateAt",ChangeTimeFormat.changeToYearMonthDay(urlTableData.getCreatedAt()));
_ContentValues.put("URLWho",urlTableData.getWho());
_ContentValues.put("URLDesc",urlTableData.getDesc());
return _ContentValues;
}
public Boolean insertToURLTable(URLTableData urlTableData) {
ContentValues _ContentValues = CreatParms(urlTableData);
Long p_NewID = getMySqLiteDatabase().insert(getTable(), null, _ContentValues);
urlTableData.set_id(p_NewID.intValue());
return p_NewID > 0;
}
這里的三個函數我解釋一下大概什么意思,第一個是給得到的數據重新賦值,第二個是設置ContentValues,第三個是執行插入。但是每次數據插入都不成功,然后我進行調試,發現每次都是運行到
if(urlTableData.getWho().equals(null)){
urlTableData.setWho("佚名");
}
這條語句就出現異常(我捕獲了異常),其中我的urlTableData.getWho()
得到的who
是空的,然后再調用equal()
方法就出現了異常,那么我們應該怎么判斷呢?既然知道了原因,那么其實就很簡單,只要將上面的第一個函數setUrlTableData(URLTableData urlTableData)
改成下面這樣:
public URLTableData setUrlTableData(URLTableData urlTableData){
if(urlTableData.getUrl()==null){
urlTableData.setUrl("該鏈接不存在");
}
if(urlTableData.getWho()==null){
urlTableData.setWho("佚名");
}
if(urlTableData.getDesc()==null){
urlTableData.setDesc("不存在");
}
if(urlTableData.getCreatedAt().toString()==null){
urlTableData.setCreatedAt(null);
}
return urlTableData;
}
這樣就好了嘛,當然如果是單個數據插入,而不是整個對象插入,就可以通過設置insert(參數)
方法來設置,這里就不贅述了。