[英]NullPointer Exception Android
在光标移动到下一个值时,它会抛出NullPointerException
(在第一个值上它运行完全正确)。
try {
myDB = this.cordova.getActivity().openOrCreateDatabase(Path, 0 , null);
/*retrieve data from database */
//sQLITE qUERY AND RESULTS STORED IIN CURSOR
Cursor c = myDB.rawQuery("SELECT * FROM " + TableName + " WHERE SyncStatus='no'", null);
//int Column1 = c.getColumnIndex("OrderID");
while (c.moveToNext()) {
// Initialize soap request + add parameters
url="http://10.1.1.239/RMS/Service.asmx/InsertORDR?jsoncallback=json&ParentID="+c.getString(2).trim()+"&CustomerID=4000010000100001&RouteID="+c.getString(4).trim()+"&RouteDay="+c.getString(5).trim()+"&WhsID="+c.getString(6).trim()+"&VehicleID=1&PrefDriverID=1&PrefSalesPersonID="+c.getString(9).trim()+"&DocType="+c.getString(10).trim()+"&OrderDate="+c.getString(11).trim()+"&OrderTime="+c.getString(12).trim()+"&ScheduleType="+c.getString(16).trim()+"&OrderType="+c.getString(17).trim()+"&ItemCost="+c.getString(18).trim()+"&SubTotal="+c.getString(25).trim()+"&PaymtMode="+c.getString(26).trim()+"&Currency="+c.getString(31).trim()+"&Notes="+c.getString(32).trim()+"&CreatedDate="+c.getString(34).trim()+"&CreatedBy="+c.getString(35).trim()+"&UpdatedDate="+c.getString(36).trim()+"&UpdatedBy="+c.getString(37).trim()+"&Status="+c.getString(38).trim()+"&Order_Status_Note="+c.getString(41).trim()+"";
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
if(jsonStr != null){
Cursor cRDR1 = myDB.rawQuery("SELECT * FROM RDR1 WHERE SyncStatus='no' AND OrderID='"+c.getString(1)+"'", null);
while (cRDR1.moveToNext()) {
url1="http://10.1.1.239/RMS/Service.asmx/InsertRDR1?jsoncallback=json&ParentID="+cRDR1.getString(2).trim()+"&ItemID="+cRDR1.getString(4).trim()+"&Box="+cRDR1.getString(6).trim()+"&Patti="+cRDR1.getString(8).trim()+"&Packet="+cRDR1.getString(9).trim()+"&UnitPrice="+cRDR1.getString(10).trim()+"&TotalPacket="+cRDR1.getString(11).trim()+"&TotalCost="+cRDR1.getString(12).trim()+"&AvlQty="+cRDR1.getString(13).trim()+"&Notes="+cRDR1.getString(16).trim()+"";
String jsonStrRDR1 = sh.makeServiceCall(url1, ServiceHandler.GET);
Log.e("Success", jsonStrRDR1);
}
}
}
}
catch(Exception e) {
Log.e("Error", "Error", e);
} finally {
if (myDB != null)
myDB.close();
}
日志猫
04-09 10:05:21.576: E/Success(7033): json({'Result': '1'})
04-09 10:05:26.626:E/Success(7033): json({'Result': '1'})
04-09 10:05:36.778: E/Success(7033): json({'Result': '1'})
04-09 10:05:51.556: E/Success(7033): json({'Result': '1'})
04-09 10:07:18.966: E/Error(7033): Error
04-09 10:07:18.966: E/Error(7033): java.lang.NullPointerException
04-09 10:07:18.966: E/Error(7033): at com.rms.vc.DataSync.execute(DataSync.java:66)
04-09 10:07:18.966: E/Error(7033): at org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:66)
首先,在 while 循环之前跳过cursor.moveToFirst()
行。 它必须像下面的代码一样。
Cursor cRDR1 = myDB.rawQuery("SELECT * FROM RDR1 WHERE SyncStatus='no' AND OrderID='"+c.getString(1)+"'", null);
if( cursor.moveToFirst()){ // return true if the first elements is exist
while (cRDR1.moveToNext()) {
url1="http://10.1.1.239/RMS/Service.asmx/InsertRDR1?jsoncallback=json&ParentID="+cRDR1.getString(2).trim()+"&ItemID="+cRDR1.getString(4).trim()+"&Box="+cRDR1.getString(6).trim()+"&Patti="+cRDR1.getString(8).trim()+"&Packet="+cRDR1.getString(9).trim()+"&UnitPrice="+cRDR1.getString(10).trim()+"&TotalPacket="+cRDR1.getString(11).trim()+"&TotalCost="+cRDR1.getString(12).trim()+"&AvlQty="+cRDR1.getString(13).trim()+"&Notes="+cRDR1.getString(16).trim()+"";
String jsonStrRDR1 = sh.makeServiceCall(url1, ServiceHandler.GET);
Log.e("Success", jsonStrRDR1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.