2016-03-27 5 views
1

Ich möchte eine Wecker App machen. Eigentlich möchte ich jetzt alle meine Alarme in die Datenbank stellen und das habe ich bereits gemacht, aber wenn ich Alarme (über LogCat) überprüfen will, bekomme ich verschiedene Alarme. Warum passiert das? Hilf mir bitte! mySQLiteHelper.class:Warum bekomme ich vor und nach dem Speichern von Daten ein anderes Ergebnis?

public class mySQLiteHelper extends SQLiteOpenHelper { 
    // All Static variables 
    // Database Version 
    public static final int DATABASE_VERSION = 2; 

    // Database Name 
    private static final String DATABASE_NAME = "alarms.db"; 

    // Contacts table name 
    private static final String TABLE_ALARMS = "alarms"; 

    // Contacts Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_ALARM = "alarm"; 
    private static final String KEY_NAME = "name"; 

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

    // Creating Tables"create table alarms (" 
    //+ "id integer primary key," 
     //  + "alarm text," 
     // + "name text," // added a ',' 
      // + "alarmname text" + ");" 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_ALARMS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_ALARM + " TEXT, " 
       + KEY_NAME + " TEXT" + ")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

    // Upgrading database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_ALARMS); 

     // Create tables again 
     onCreate(db); 
    } 

    /** 
    * All CRUD(Create, Read, Update, Delete) Operations"," + alarm.getName() +,name 
    */ 

    // Adding new contact 
    void addAlarm(Alarm alarm) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     String sql = 
       "INSERT or replace " + 
         "INTO alarms (alarm,"+KEY_NAME+") " + 
         "VALUES("+ alarm.getAlarm() + ",'" + alarm.getName() + "')"; 
     //String sql = 
      //  "INSERT or replace INTO alarms (alarm,alarmname) VALUES("+ alarm.getAlarm() + ",'" + alarm.getName() + "')" ; 
     db.execSQL(sql); 
     db.close(); // Closing database connection 
    } 

    // Getting single contact 
    String getAlarm(String alarmname) { 
     String query = "Select * FROM " + TABLE_ALARMS + " WHERE " + KEY_NAME + " = \"" + alarmname + "\""; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(query, null); 
     if (cursor.getCount()>0) 
      cursor.moveToFirst(); 
     String alarm = cursor.getString(cursor.getColumnIndex(KEY_ALARM)); 
     cursor.close(); 
     // return contact 
     return alarm; 
    } 

    // Deleting single contact 
    public void deleteAlarm(Alarm alarm) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(TABLE_ALARMS, KEY_ID + " = ?", 
       new String[] { String.valueOf(alarm.getID()) }); 
     db.close(); 
    } 


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

     // return count 
     return i; 
    } 
} 

Alarm.class:

public class Alarm { 
    //private variables 
    int _id; 
    String _name; 
    String _alarm; 

    // Empty constructor 
    public Alarm(String alarm,String alarmname){ 
     this._alarm = alarm; 
     this._name = alarmname; 
    } 
    // constructor 
    public Alarm(int id, String name, String alarm){ 
     this._id = id; 
     this._name = name; 
     this._alarm = alarm; 
    } 

    // constructor 
    public Alarm(String alarm){ 
     this._alarm = alarm; 
    } 
    // getting ID 
    public int getID(){ 
     return this._id; 
    } 

    // getting name 
    public String getName(){ 
     return this._name; 
    } 

    // getting phone number 
    public String getAlarm(){ 
     return this._alarm; 
    } 
} 

Dies ist, wie ich eingestellte Zeit, addAlarm anrufen und meine Alarme zum ersten Mal

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute()); 
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour()); 
Calendar calendar1 = Calendar.getInstance(); 
calendar1.set(Calendar.MINUTE, timePicker1.getCurrentMinute()); 
calendar1.set(Calendar.HOUR_OF_DAY,timePicker1.getCurrentHour()); 
    String alarm1 = Long.toString(calendar.getTimeInMillis()); 
        String alarm2 = Long.toString(calendar1.getTimeInMillis()); 
        Log.i("Alarm1.1",alarm1); 
        Log.i("Alarm2.1",alarm2); 
        mySQLiteHelper mySQLiteHelper = new mySQLiteHelper(MainActivity2.this); 
        Log.i("Point_version",Integer.toString(mySQLiteHelper.DATABASE_VERSION)); 
        mySQLiteHelper.addAlarm(new Alarm(alarm1,"alarm1")); 
        mySQLiteHelper.addAlarm(new Alarm(alarm2,"alarm2")); 

erhalten und Nach einiger Zeit bekomme ich meine Alarme

Als ich versucht hatte, das ich habe diese Ergebnisse:

Alarm1.1﹕ 1459098157713 
Alarm2.1﹕ 1459098230836 
Alarm1.2﹕ 1459095666194 
Alarm2.2﹕ 1459095664808 
+0

Können Sie Kalender- und Kalender1-Code zum Einstellen von Stunde und Minute hinzufügen? – GiapLee

+0

@giaplee Schau mal, ich habe meine Frage bearbeitet –

Antwort

1

Ersetzen Sie diese

String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_ALARMS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_ALARM + " TEXT, " 
       + KEY_NAME + " TEXT" + ")"; 
db.execSQL(CREATE_CONTACTS_TABLE); 

dieses

String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_ALARMS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_ALARM + " TEXT, " 
      + KEY_NAME + " TEXT, UNIQUE ("+KEY_NAME+") ON CONFLICT REPLACE" + ")"; 
db.execSQL(CREATE_CONTACTS_TABLE); 

und installieren Sie APP ...

0

Eigentlich habe ich nur vergessen, alle Daten zu löschen und da wir Re mehrere Strings (Alarme) und alle von ihnen hatten den gleichen Namen.

Verwandte Themen