iWayan
iWayan

Reputation: 109

Can't insert DateTime to SQLite on Android Studio

I am a newbie programmer for Android Studio, here i have some problem with my programs,

i want to insert some DateTime type to my SQLite table, but when i want to insert it using ContentValue, the compiler read it as an error statement. it said

Can't resolve method 'put(java.lang.string,java.sql.date)

i don't know how to solve this problem, even i have searching for some answer but still unsolved.

i have searching and finding some answer on Stackoverflow, but its still not solve my error, they said to use DATETIME, but here i have use it and still not solve my error.

Please master, gimme some answer. Thanks before.

NB. here is my code

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String MyVillageSoftware = "MyVillageSoftware";
public static final String DATABASE_NAME = "Cashflow.db";
public static final String TABLE_Categ_NAME = "category_table";
public static final String TABLE_Trans_NAME = "transaction_table";
public static final String COL1 = "CategId";
public static final String COL2 = "CategName";
public static final String COL3 = "Note";
public static final String COL4 = "Currency";
public static final String COL5 = "_id";
//TOL for transaction Coloumn
public static final String TOL1 = "TransId";
public static final String TOL2 = "TransName";
public static final String TOL3 = "Amount";
public static final String TOL4 = "TransNote";
public static final String TOL5 = "TransDate";
public static final String TOL6 = "CategId";
public static final String TOL7 = "_id";
private static final String TAG = DatabaseHelper.class.getSimpleName();
SQLiteDatabase db;

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 6);
}

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL("Create table " + TABLE_Categ_NAME +
            " (CategID Integer PRIMARY KEY AUTOINCREMENT, " +
            "CategName Text," +
            " Note Text," +
            " Currency Text," +
            " _id Text)");

    db.execSQL("Create table " + TABLE_Trans_NAME +
            " (TransID Integer PRIMARY KEY AUTOINCREMENT, " +
            "TransName Text," +
            " Amount Integer," +
            " TransNote Text," +
            " TransDate Datetime," +
            " CategID Integer, " +
            " _id Text)");
}

public boolean insertCategData(String categname, String note, String currency, String id){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL2, categname);
    contentValues.put(COL3, note);
    contentValues.put(COL4, currency);
    contentValues.put(COL5, id);
    long result = db.insert(TABLE_Categ_NAME, null, contentValues);
     if (result == -1)
         return false;
     else
         return true;

}

public boolean insertTransData (String transname, Integer amount, String transnote, Date transdate, Integer categid, String id){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(TOL1, transname);
    contentValues.put(TOL2, amount);
    contentValues.put(TOL3, transnote);

    //PROBLEMS COME FROM HERE
    contentValues.put(TOL4, transdate);
    contentValues.put(TOL5, categid);
    contentValues.put(TOL6, id);
    long result = db.insert(TABLE_Categ_NAME, null, contentValues);
    if (result == -1)
        return false;
    else
        return true;

}

public List<String> getAllCategory() {
    List<String> AllCategoryList = new ArrayList<String>();

        String selectQuery = "SELECT * FROM " + TABLE_Categ_NAME;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {

                String ID = cursor.getString(0);
                String Categ = cursor.getString(1);
                String Note = cursor.getString(2);
                String Curr = cursor.getString(3);
                AllCategoryList.add(Categ);

            } while (cursor.moveToNext());
        }
        cursor.close();
        db.close();
        return AllCategoryList;
    }

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_Categ_NAME);
    onCreate(db);
    }
}

Upvotes: 2

Views: 1332

Answers (1)

StG
StG

Reputation: 257

SQLite databases only support integer, text and few other basic data types. Date objects are not supported, BUT you can always save your Date object as a long timestamp, taking Date.getTime() long value and adding it as an integer type. And you shouldn't use ContentValues.put() method, use putInt, putString and similar instead. In your case, define in your table a date integer column, and put it in your ContentValue object via putLong() method.

Upvotes: 2

Related Questions