2016-10-20 1 views
-4

Ich weiß, das ist ein sehr seltsames Problem. Ich benutzte sqlite zum Speichern von Transaktionsdaten auf einem Rechner, der auf Android OS funktioniert. Die Anwendung hat mehrere Tabellen und führt mehrere db Lese-/Schreibvorgänge durch. Die App erlebt oft einen Absturz der App. Und es wurde festgestellt, dass die App manchmal alle Daten beim Absturz der App verloren hat.Android SQLITE DB verlor alle Daten

* Ich verwende eine Datenbank-Handler-Klasse, die Sqlite Open-Helper zur Ausführung aller db-Operationen erweitert. Dies ist der Link des Tutorials, dem ich gefolgt bin. http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

DatabaseHandler Klasse

public class DatabaseHandler extends SQLiteOpenHelper { 


private static DatabaseHandler mInstance = null; 
// All Static variables 
// Database Version 
private static final int DATABASE_VERSION = 77; 

// Database Name 
public static final String DATABASE_NAME = "chillarMachine"; 

// Contacts table name 
private static final String TABLE_CONTACTS = "contacts"; 
private static final String TABLE_OPERATIONAL_DEVICE_DATA= "operational_device_data"; 
private static final String TABLE_DEVICE_INFO= "device_info"; 
private static final String TABLE_USER= "user"; 
private static final String TABLE_BLOCKED_CARDS_INFO= "blocked_cards_info"; 
private static final String TABLE_USER_PERMISSION_DATAA= "user_permission_dataa"; 
private static final String TABLE_ATTENDENCE_TYPE= "attendence_type"; 
private static final String TABLE_ATTENDENCE_DATA= "attendence_data"; 
private static final String TABLE_TRANSACTION_TYPE= "transaction_type"; 
private static final String TABLE_SUCCESS_TRANSACTION= "success_transaction"; 
private static final String TABLE_PAYMENT_TRANSACTION= "payment_transaction"; 
private static final String TABLE_PAYMENT_TYPE= "payment_type"; 
private static final String TABLE_RECHARGE_DATA= "recharge_data"; 
private static final String TABLE_CATEGORY_LIST= "category_list"; 
private static final String TABLE_ITEM_STOCK= "item_stock"; 
private static final String TABLE_ITEM_LIST= "item_list"; 
private static final String TABLE_SALES_ITEM_LIST= "sales_item_list"; 
private static final String TABLE_ITEM_SALE_TRANSACTION= "item_sale_transaction"; 
private static final String TABLE_FEES_TRANSACTIONS= "fees_transactions"; 
private static final String TABLE_FEES_LIST= "fees_list"; 
private static final String TABLE_FEES_STRUCTURE= "fees_structure"; 
private static final String TABLE_LIBRARY_BOOK_TRANSACTION= "library_book_transaction"; 
private static final String TABLE_ITEM_TYPE= "item_type"; 

private static final String TABLE_REFUND_TRANSACTION= "refund_transaction"; 




// Common Table Columns names 
private static final String KEY_ID = "id"; 
private static final String KEY_MACHINE_ID= "machine_id"; 
private static final String KEY_SERVER_TIMESTAMP= "server_timestamp"; 
private static final String KEY_TRANSACTION_TYPE_ID= "transaction_type_id"; 
private static final String KEY_TRANSACTION_ID= "transaction_id"; 
private static final String KEY_CARD_SERIAL= "card_serial"; 
private static final String KEY_ITEM_ID= "item_id"; 
private static final String KEY_CATEGORY_ID= "category_id"; 
private static final String KEY_SALES_TRANS_ID= "sales_trans_id"; 
private static final String KEY_BILL_NO= "bill_no"; 
private static final String KEY_TOTAL_AMOUNT= "total_amount"; 
private static final String KEY_FEES_TRANS_ID= "fees_trans_id"; 
private static final String KEY_FEES_ID= "fees_id"; 


//Device info columns names 
private static final String KEY_SERIAL_NO= "serial_no"; 
private static final String KEY_SCHOOL_ID= "school_id"; 
private static final String KEY_SCHOOL_NAME= "school_name"; 
private static final String KEY_SCHOOL_PLACE= "school_place"; 
private static final String KEY_DEVICE_LAST_TRANS_ID= "device_last_trans_id"; 
private static final String KEY_MAIN_SERVER_URL= "main_server_url"; 
private static final String KEY_MAIN_UPLOAD_PATH= "main_upload_path"; 

//User table Columns names 
private static final String KEY_USER_ID= "user_id"; 
private static final String KEY_USER_NAME= "user_name"; 
private static final String KEY_PASSWORD= "password"; 

//Blocked cards info table Columns names 
private static final String KEY_BLOCKED_CARDS_ID= "blocked_cards_id"; 


//User permission data table Column names 
private static final String KEY_PERMISSION_ID= "permission_id"; 

private static final String KEY_PERMISSION= "permission"; 

//Attendence Type table Column names 
private static final String KEY_ATTENDENCE_TYPE_NAME= "attendence_type_name"; 

//Attendence data table column names 
private static final String KEY_ATTENDENCE_DATA_ID= "attendence_data_id"; 

private static final String KEY_IN_OUT= "in_out"; 
private static final String KEY_ATTENDENCE_TYPE_ID= "attendence_type_id"; 

//Transaction type table column names 
private static final String KEY_TRANSACTION_TYPE_NAME= "transaction_type_name"; 

//Success transaction table column names 
private static final String KEY_PREV_BALANCE= "prev_balance"; 
private static final String KEY_CURRENT_BALANCE= "current_balance"; 
private static final String KEY_TIME_STAMP= "time_stamp"; 


//Payment transaction table column names 
private static final String KEY_AMOUNT= "amount"; 

//PAyment type table column names 
private static final String KEY_PAYMENT_TYPE_NAME= "payment_type_name"; 

//Recharge data table column names 
private static final String KEY_RECHARGE_ID= "recharge_id"; 
private static final String KEY_RECHARGE_AMOUNT= "recharge_amt"; 
private static final String KEY_RECHARGE_TIME= "recharge_time"; 
private static final String KEY_PAYMENT_TYPE_ID= "payment_type_id"; 



//Fees list table column names 

//Fees structure table column names 
private static final String KEY_FEES_STRUCTURE_NAME= "fees_structure_name"; 


// Table Create Statements 
// Operational device data table create statement 
private static final String CREATE_TABLE_OPERATIONAL_DEVICE_DATA = "CREATE TABLE IF NOT EXISTS " 
     + TABLE_OPERATIONAL_DEVICE_DATA + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_LAST_TRANS_ID 
     + " TEXT," + KEY_MACHINE_ID + " TEXT," + KEY_LAST_MACHINE_TRANS_TIME 
     + " DATETIME," + KEY_LAST_SERVER_TRANS_TIME + " DATETIME," + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 


private static final String CREATE_TABLE_DEVICE_INFO = "CREATE TABLE IF NOT EXISTS " 
     + TABLE_DEVICE_INFO + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_MACHINE_ID 
     + " TEXT," + KEY_SERIAL_NO + " TEXT," + KEY_SCHOOL_ID 
     + " TEXT," +KEY_SCHOOL_NAME+ " TEXT," +KEY_SCHOOL_PLACE+ " TEXT," +KEY_DEVICE_LAST_TRANS_ID+ " TEXT," + KEY_MAIN_SERVER_URL + " TEXT," + KEY_MAIN_UPLOAD_PATH + " TEXT" + ")"; 


private static final String CREATE_TABLE_USER = "CREATE TABLE IF NOT EXISTS " + TABLE_USER + "(" 
     + KEY_USER_ID + " INTEGER PRIMARY KEY," + KEY_USER_NAME + " TEXT," 
     + KEY_PASSWORD + " TEXT," + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_BLOCKED_CARDS_INFO= "CREATE TABLE IF NOT EXISTS " + TABLE_BLOCKED_CARDS_INFO + "(" 
     + KEY_BLOCKED_CARDS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_CARD_SERIAL + " TEXT," 
     + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_TABLE_USER_PERMISSION_DATAA = "CREATE TABLE IF NOT EXISTS " + TABLE_USER_PERMISSION_DATAA + "(" 
     + KEY_PERMISSION_ID + " INTEGER PRIMARY KEY," + KEY_TRANSACTION_TYPE_ID + " INTEGER," 
     + KEY_USER_ID + " INTEGER," + KEY_PERMISSION + " INTEGER," + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_TABLE_ATTENDENCE_TYPE = "CREATE TABLE IF NOT EXISTS " + TABLE_ATTENDENCE_TYPE + "(" 
     + KEY_ID + " INTEGER PRIMARY KEY," + KEY_ATTENDENCE_TYPE_NAME + " TEXT," 
     + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_TABLE_ATTENDENCE_DATA = "CREATE TABLE IF NOT EXISTS " + TABLE_ATTENDENCE_DATA + "(" 
     + KEY_ATTENDENCE_DATA_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TRANSACTION_ID + " TEXT," 
     + KEY_IN_OUT + " INTEGER," + KEY_ATTENDENCE_TYPE_ID + " INTEGER," + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_TABLE_TRANSACTION_TYPE = "CREATE TABLE IF NOT EXISTS " + TABLE_TRANSACTION_TYPE + "(" 
     + KEY_TRANSACTION_TYPE_ID + " INTEGER PRIMARY KEY," + KEY_TRANSACTION_TYPE_NAME + " TEXT," 
     + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

private static final String CREATE_TABLE_SUCCESS_TRANSACTION = "CREATE TABLE IF NOT EXISTS " 
     + TABLE_SUCCESS_TRANSACTION + "(" + KEY_TRANSACTION_ID + " VARCHAR PRIMARY KEY," + KEY_USER_ID 
     + " INTEGER," + KEY_TRANSACTION_TYPE_ID + " INTEGER," + KEY_PREV_BALANCE 
     + " FLOAT," + KEY_CURRENT_BALANCE + " FLOAT," + KEY_CARD_SERIAL + " TEXT," + KEY_TIME_STAMP + " DATETIME," + KEY_SERVER_TIMESTAMP + " DATETIME" + ")"; 

    public static DatabaseHandler getInstance(Context ctx) { 

    // Use the application context, which will ensure that you 
    // don't accidentally leak an Activity's context. 

    if (mInstance == null) { 
     mInstance = new DatabaseHandler(ctx); 
    } 
    return mInstance; 
} 



public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

// Creating Tables 
@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
      + KEY_PH_NO + " TEXT" + ")"; 
    db.execSQL(CREATE_CONTACTS_TABLE); 

    db.execSQL(CREATE_TABLE_OPERATIONAL_DEVICE_DATA); 
    db.execSQL(CREATE_TABLE_DEVICE_INFO); 
    db.execSQL(CREATE_TABLE_USER); 
    db.execSQL(CREATE_BLOCKED_CARDS_INFO); 
    db.execSQL(CREATE_TABLE_USER_PERMISSION_DATAA); 
    db.execSQL(CREATE_TABLE_ATTENDENCE_TYPE); 



} 

// Adding new User................................................................................................................ 
void addUser(User user) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 

    values.put(KEY_USER_ID,user.getUser_id()); 
    values.put(KEY_USER_NAME, user.getUser_name()); // User Name 
    values.put(KEY_PASSWORD, user.getPassword()); // User Password 
    values.put(KEY_SERVER_TIMESTAMP,user.getServer_timestamp()); //server timestamp 

    // Inserting Row 
    db.insert(TABLE_USER, null, values); 
    db.close(); // Closing database connection 
} 

// Getting single contact 
User getUser(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_USER, new String[] { KEY_USER_ID, 
        KEY_USER_NAME, KEY_PASSWORD ,KEY_SERVER_TIMESTAMP}, KEY_USER_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, null); 
    if (cursor != null) 
     cursor.moveToFirst(); 

    User user = new User(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2),cursor.getString(3)); 
    // return contact 
    return user; 
} 
// Getting All Conta 
public List<User> getAllUsers() { 
    List<User> userList = new ArrayList<User>(); 
    // Select All Query 


    String selectQuery = "SELECT * FROM " + TABLE_USER; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      User user = new User(); 
      user.setUser_id(Integer.parseInt(cursor.getString(0))); 
      user.setUser_name(cursor.getString(1)); 
      user.setPassword(cursor.getString(2)); 
      // Adding contact to list 
      userList.add(user); 
     } while (cursor.moveToNext()); 
    } 


    cursor.close();   // Dont forget to close your cursor 
    db.close(); 
    // return contact list 
    return userList; 
} 

// Updating single user 
public int updateUser(User user) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_USER_NAME, user.getUser_name()); 
    values.put(KEY_PASSWORD, user.getPassword()); 

    // updating row 
    return db.update(TABLE_USER, values, KEY_USER_ID + " = ?", 
      new String[] { String.valueOf(user.getUser_id()) }); 
} 

// Deleting single contact 
public void deleteUser(User user) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_USER, KEY_USER_ID + " = ?", 
      new String[] { String.valueOf(user.getUser_id()) }); 
    db.close(); 
} 


// Getting contacts Count 
public int getUserCount() { 
    String countQuery = "SELECT * FROM " + TABLE_USER; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    cursor.close(); 

    // return count 
    return cursor.getCount(); 
} 
public void deleteAllUser(){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL("delete from "+ TABLE_USER); 
    db.close(); 
} 







// USER PERMISSION DATA ........................................................................................................... 



// Getting single contact 
User_Permission_Data getUserpermission(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_USER_PERMISSION_DATAA, new String[] { KEY_PERMISSION_ID,KEY_TRANSACTION_TYPE_ID, 
        KEY_USER_ID, KEY_PERMISSION,KEY_SERVER_TIMESTAMP }, KEY_PERMISSION_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, null); 
    if (cursor != null) 
     cursor.moveToFirst(); 

    User_Permission_Data contact = new User_Permission_Data(
      Integer.parseInt(cursor.getString(0)),Integer.parseInt(cursor.getString(1)), Integer.parseInt(cursor.getString(2)), Integer.parseInt(cursor.getString(3)),cursor.getString(4)); 
    // return contact 
    return contact; 
} 

// Getting All Contacts 
public List<User_Permission_Data> getAllUserspermission() { 
    List<User_Permission_Data> permissionList = new ArrayList<User_Permission_Data>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_USER_PERMISSION_DATAA; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      User_Permission_Data userpermission = new User_Permission_Data(); 
      userpermission.setPermission_id(Integer.parseInt(cursor.getString(0))); 
      userpermission.setTransaction_type_id(Integer.parseInt(cursor.getString(1))); 
      userpermission.setuser_id(Integer.parseInt(cursor.getString(2))); 
      userpermission.setPermission(Integer.parseInt(cursor.getString(3))); 
      userpermission.setServer_timestamp(cursor.getString(4)); 

      // Adding contact to list 
      permissionList.add(userpermission); 
     } while (cursor.moveToNext()); 
    } 

    cursor.close();   // Dont forget to close your cursor 
    db.close(); 

    // return contact list 
    return permissionList; 
} 

// Updating single user 
public int updateUserpermission(User_Permission_Data userpermissiondata) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues valuespermission = new ContentValues(); 
    valuespermission.put(KEY_TRANSACTION_TYPE_ID, userpermissiondata.getTransaction_type_id()); 
    valuespermission.put(KEY_USER_ID, userpermissiondata.getuser_id()); 
    valuespermission.put(KEY_PERMISSION, userpermissiondata.getPermission()); 
    valuespermission.put(KEY_PERMISSION_ID, userpermissiondata.getPermission_id()); 
    valuespermission.put(KEY_SERVER_TIMESTAMP, userpermissiondata.getServer_timestamp()); 

    // updating row 
    return db.update(TABLE_USER_PERMISSION_DATAA, valuespermission, KEY_PERMISSION_ID + " = ?", 
      new String[] { String.valueOf(userpermissiondata.getuser_id()) }); 
} 

// Deleting single contact 
public void deleteUserpermission(User_Permission_Data user) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_USER_PERMISSION_DATAA, KEY_TRANSACTION_TYPE_ID + " = ?", 
      new String[] { String.valueOf(user.getuser_id()) }); 
    db.close(); 
} 


// Getting contacts Count 
public int getUserCountpermission() { 
    String countQuery = "SELECT * FROM " + TABLE_USER_PERMISSION_DATAA; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    cursor.close(); 

    // return count 
    return cursor.getCount(); 
} 
public void deleteAllUserpermission(){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL("delete from "+ TABLE_USER_PERMISSION_DATAA); 
    db.close(); 
} 


public void userPermission(int userId){ 
    System.out.println("CODMOB:permiss"); 
    String MY_QUERY = "SELECT transaction_type_name FROM transaction_type INNER JOIN user_permission_dataa" + 
      " WHERE user_permission_dataa.user_id=?"; 
    System.out.println(MY_QUERY); 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(MY_QUERY, new String[]{String.valueOf(userId)}); 


    TransactionType transactionType=new TransactionType(); 

    System.out.println("CODMOB:cursor "+ transactionType.getTransaction_type_name()); 

    cursor.close(); 

} 


public List<Payment_Transaction> getAllpaytransactiontoUp() { 
    List<Payment_Transaction> paytrans = new ArrayList<Payment_Transaction>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_PAYMENT_TRANSACTION+" where "+KEY_SERVER_TIMESTAMP+" = ''"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Payment_Transaction paytranss = new Payment_Transaction(); 

      paytranss.setId(Integer.parseInt(cursor.getString(0))); 
      paytranss.setbillno(cursor.getString(1)); 
      paytranss.settrans_id(cursor.getString(2)); 

      paytranss.setamount(Float.parseFloat(cursor.getString(3))); 


      paytranss.setserver_timestamp(cursor.getString(4)); 

      // Adding contact to list 
      paytrans.add(paytranss); 
     } while (cursor.moveToNext()); 
    } 

    cursor.close();   // Dont forget to close your cursor 
//  db.close(); 
    // return contact list 
    return paytrans; 
} 




public List<Refund> getAllRefundtoUp() { 
    List<Refund> liblist = new ArrayList<Refund>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_REFUND_TRANSACTION+" where "+KEY_SERVER_TIMESTAMP+" = ''"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Refund sl = new Refund(); 
      sl.setId(Integer.parseInt(cursor.getString(0))); 
      sl.setTrans_id(cursor.getString(1)); 
      sl.setOrig_trans_id(cursor.getString(2)); 
      sl.setAmount(cursor.getFloat(3)); 
      sl.setserver_timestamp(cursor.getString(4)); 

      // Adding contact to list 
      liblist.add(sl); 
     } while (cursor.moveToNext()); 
    } 

    cursor.close();   // Dont forget to close your cursor 
    // return contact list 
    return liblist; 
} 



public List<Payment_Transaction> getallPaymentbyBill(String transid) { 
    List<Payment_Transaction> feetransact = new ArrayList<Payment_Transaction>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_PAYMENT_TRANSACTION+" where "+KEY_TRANSACTION_ID+" = "+"'"+transid+"'"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Payment_Transaction itemsss = new Payment_Transaction(); 
      itemsss.setId(Integer.parseInt(cursor.getString(0))); 
      itemsss.setbillno(cursor.getString(1)); 
      itemsss.settrans_id(cursor.getString(2)); 
      itemsss.setamount(Float.valueOf(cursor.getString(3))); 
      itemsss.setserver_timestamp(cursor.getString(4)); 

      // Adding contact to list 
      feetransact.add(itemsss); 
     } while (cursor.moveToNext()); 
    } 

    cursor.close();   // Dont forget to close your cursor 

    // return contact list 
    return feetransact; 
} 




public List<Success_Transaction> getAllsxstoupNew() { 
    List<Success_Transaction> successtrans = new ArrayList<Success_Transaction>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_SUCCESS_TRANSACTION+" where "+KEY_SERVER_TIMESTAMP+" = '-1'"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Success_Transaction successss = new Success_Transaction(); 
      successss.settrans_id(cursor.getString(0)); 
      successss.setuser_id(Integer.parseInt(cursor.getString(1))); 
      successss.settarans_type_id(Integer.parseInt(cursor.getString(2))); 
      successss.setprevious_balnce(Float.parseFloat(cursor.getString(3))); 
      successss.setcurrent_balance(Float.parseFloat(cursor.getString(4))); 
      successss.setcard_serial(cursor.getString(5)); 
      successss.settime_stamp(cursor.getString(6)); 
      successss.setserver_timestamp(cursor.getString(7)); 
      // Adding contact to list 
      successtrans.add(successss); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close();   // Dont forget to close your cursor 
    // return contact list 
    return successtrans; 
} 



public List<Item_Sale> getAllitemsaletoUpNew() { 
    List<Item_Sale> feetransact = new ArrayList<Item_Sale>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_ITEM_SALE_TRANSACTION+" where "+KEY_SERVER_TIMESTAMP+" = '-1'"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Item_Sale itemsss = new Item_Sale(); 
      itemsss.setsale_trans_id(cursor.getString(0)); 
      itemsss.settransaction_id(cursor.getString(1)); 
      itemsss.setbill_no(cursor.getString(2)); 
      itemsss.settot_amount(cursor.getString(3)); 
      itemsss.setserver_timestamp(cursor.getString(4)); 

      // Adding contact to list 
      feetransact.add(itemsss); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close();   // Dont forget to close your cursor 
//  db.close(); 
    // return contact list 
    return feetransact; 
} 

public List<Sales_Item> getAllsaletoUpNew() { 
    List<Sales_Item> liblist = new ArrayList<Sales_Item>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_SALES_ITEM_LIST+" where "+KEY_SERVER_TIMESTAMP+" = '-1'"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Sales_Item sl = new Sales_Item(); 
      sl.setSales_item_id(Integer.parseInt(cursor.getString(0))); 
      sl.setsales_trans_id(cursor.getString(1)); 
      sl.setitem_id(cursor.getString(2)); 
      sl.setitem_quantity(cursor.getString(3)); 
      sl.setamount(cursor.getString(4)); 
      sl.setserver_timestamp(cursor.getString(5)); 


      // Adding contact to list 
      liblist.add(sl); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close();   // Dont forget to close your cursor 
//  db.close(); 
    // return contact list 
    return liblist; 
} 



public String userLogin(String uName,String uPass){ 
    String selectQuery ="SELECT * FROM " + TABLE_USER + " WHERE " + KEY_USER_NAME + "='" + uName +"'AND "+KEY_PASSWORD+"='"+uPass+"'"; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    if (cursor!=null&&cursor.moveToFirst()) { 

     String uID=cursor.getString(cursor.getColumnIndex(KEY_USER_ID)); 

     System.out.println("LOGIN USER ID : "+uID); 

     cursor.close(); 
     return uID; 
    } 
    cursor.close(); 
    return "false"; 


} 

public String getSinlgeEntry(String userName) 
{ 
    String password=""; 
    try { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.query(TABLE_USER, null, KEY_USER_NAME + "=?", new String[]{userName}, null, null, null); 
     if (cursor.getCount() < 1) // UserName Not Exist 
     { 
      cursor.close(); 
      return "NOT EXIST"; 
     } 
     cursor.moveToFirst(); 
     password = cursor.getString(cursor.getColumnIndex(KEY_PASSWORD)); 
     cursor.close(); 
    }catch(Exception e){ 
     return "exception"; 
    } 
    return password; 
} 

}

+2

Bitte teilen Sie den Code und wie Sie das Problem reproduzieren. – Joshua

+3

Capture App Crash-Protokolle und teilen. –

+0

Ich habe ein Beispiel meiner Datenbank-Handler-Klasse hinzugefügt. –

Antwort

0

versuchen Ihre App in Emulator laufen zu lassen und überprüfen Datenbank nach Absturz zu sehen, ob es tatsächlich zerstört/neu ist oder Daten vorhanden sind und Ihre Methoden sind keine Daten extrahieren (zB falsche Schlüssel)

kann nicht mehr ohne Protokolle helfen

+0

Ich kann dies nicht im Emulator ausführen, weil dies eine Maschine ist, die ein RFID-Modul verwendet. Ich habe Crashlytics-Tool implementiert und die einzigen Abstürze, die ich von diesem Rechner bekomme, sind Illegal State Exceptions, SqliteDisk io Exceptions etc. irgendwelche Hilfe? –

+0

Kannst du RFID auf dem Emulator fälschen/deaktivieren? nur um Datenbankprobleme zu debuggen –

+0

Dort liegt das Problem. Ohne das Lesen der RFID-Karte können keine Transaktionen getätigt werden. Ich meine, alle Transaktionen werden abgeschlossen und erst nach dem Lesen einer RFID-Karte in db geschrieben. Daher bedeutet kein RFID, keine DB. –

Verwandte Themen