【发布时间】:2015-09-21 04:20:13
【问题描述】:
我想从警报服务访问我的 sqlite 数据库。还想向数据库添加新记录。我尝试了很多,但出现异常。请帮帮我..你可以在下面找到整个代码
public class MyAlarmService extends Service {
DatabaseManager database;
String ename;
int id;
DateFormat d;
RestClient obj;
private Context context;
Long timstpAtFive;
private String posturl = "http://infinitsolutions.in/attendance/api/attendance";
public MyAlarmService(){}
public MyAlarmService(Context context, Long tlong ){
this.context = context;
this.timstpAtFive=tlong;
}
@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
// TODO Auto-generated method stub
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId)
{
super.onStart(intent, startId);
d = DateFormat.getDateInstance();
obj = new RestClient((android.app.Activity) context);
try {
String stat = "signed in";
ArrayList<DataRecord>autoList = database.executeQuery("select employee_Id from attendance where date='" + d.format(new Date()) + "' and status = '" + stat + "'");
int size = autoList.size();
for (int i = 0; i < size; i++) {
id = autoList.get(i).getInt("employee_Id");
ArrayList<DataRecord> list = database.executeQuery("select status from attendance where employee_Id ='" + id + "'and date='" + d.format(new Date()) + "'");
int n = list.size();
if (list.get(n - 1).equals("signed in")) {
ArrayList<DataRecord> list1 = database.executeQuery("select employee_name from employee where employee_Id ='" + id + "'");
ename = list1.get(0).getString("employee_name");
methodemployee(id, ename);
}
}
}catch(NullPointerException e){
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
private void methodemployee(int employee_id,String employee_name)
{
DataRecord data= new DataRecord();
try {
data.put("employee_name", employee_name);
data.put("employee_Id",employee_id);
data.put("date", d.format(new Date()));
data.put("time",timstpAtFive);
data.put("status", "signed out");
data.put("type", "auto");
database.addRecord("attendance", null, data);
} catch (JSONException e) {
e.printStackTrace();
}
ArrayList<DataRecord> attendance = database.executeQuery("select * from attendance where employee_Id ='" + employee_id + "'");
int n=attendance.size();
//postdata(attendance.get(n-1));
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
}
// Post data to server and return acknowledgement from server
private void postdata(DataRecord dataRecord) {
obj.POST(posturl, getJSON(dataRecord), new RestListenerJson() {
@Override
public void onResultJsonFormat(JSONObject jsonobject) {
}
@Override
public void onResultJsonFormat(String jsonobject) {
String result = jsonobject;
}
});
}
//Convert the datarecords to JSONString
private String getJSON(DataRecord dataRecord)
{
JSONObject Jobj = new JSONObject();
try {
DateFormat d1 = DateFormat.getTimeInstance();
//long time = d1.parse(dataRecord.getString("time")).getTime() / 1000;
Jobj.put("date", dataRecord.getString("date"));
Jobj.put("employee_Id", dataRecord.getString("employee_Id"));
Jobj.put("time", timstpAtFive);
Jobj.put("status", dataRecord.getString("status"));
Jobj.put("employee_name", dataRecord.getString("employee_name"));
Jobj.put("type", dataRecord.getString("type"));
} catch (JSONException e) {
e.printStackTrace();
} //catch (ParseException e) {
// e.printStackTrace();
//}
catch (NullPointerException e) {
e.printStackTrace();
}
return Jobj.toString();
}
}
你可以在下面找到logcat警告..没有错误
9-21 11:32:00.877 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ java.lang.NullPointerException
09-21 11:32:00.877 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at com.example.infinitdeveloper.myapplication.MyAlarmService.onStart(MyAlarmService.java:74)
09-21 11:32:00.877 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.app.Service.onStartCommand(Service.java:450)
09-21 11:32:00.877 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2797)
09-21 11:32:00.877 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.app.ActivityThread.access$2100(ActivityThread.java:145)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5214)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:814)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:630)
09-21 11:32:00.887 4778-4778/com.example.infinitdeveloper.myapplication W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
你是如何获得上下文的?还有什么例外?发布您的日志猫
-
请张贴您的变量数据库声明行和您的日志信息。以便我能够找到错误。
-
database.executequery(" ");返回游标你如何初始化为 ArrayList
-
为什么要将上下文投射到 Activity
obj = new RestClient((android.app.Activity) context); -
该上下文用于将数据发布到服务器
标签: android sqlite android-studio