Reputation: 84
I am having trouble with storing integer value in SQLite database.
Here are my codes.
My insert code of the Create_Events.java
Button btnCreate = (Button)findViewById(R.id.saveButton);
btnCreate.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
calDB.open();
long _id;
EditText txtTitle = (EditText) findViewById(R.id.txtTitle);
String title = txtTitle.getText().toString();
EditText txtLocation = (EditText) findViewById(R.id.editText1);
String location = txtLocation.getText().toString();
EditText startTime = (EditText) findViewById(R.id.editText2);
String startTime = startTime.getText().toString();
_id = calDB.insertEvent(title, location, 0, 0);
calDB.close();
}
});
CalendarAdapter.java (Database class)
package main.page;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class CalendarAdapter
{
public static final String KEY_ROWID = "_id";
public static final String KEY_TITLE = "title";
public static final String KEY_LOCATION = "location";
public static final String KEY_START = "starttime";
public static final String KEY_END = "endtime";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "anniversary";
private static final String DATABASE_TABLE = "calendar";
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_CREATE = "create table calendar(_id integer primary key autoincrement,"+
"title text not null, location text not null, starttime integer, endtime integer);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public CalendarAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
try
{
db.execSQL(DATABASE_CREATE);
}catch(SQLException e)
{
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database from version "+oldVersion+" to "+newVersion+", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS calendar");
onCreate(db);
}
}
public CalendarAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
public void close()
{
DBHelper.close();
}
public long insertEvent(String title, String location, int starttime, int endtime)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_LOCATION, location);
initialValues.put(KEY_START, starttime);
initialValues.put(KEY_END, endtime);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteEvent(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
public Cursor getAllEvents()
{
return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_LOCATION, KEY_START, KEY_END}, null, null, null, null, null);
}
public Cursor getEvent(long rowId) throws SQLException
{
Cursor c = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_LOCATION, KEY_START, KEY_END}, KEY_ROWID + "=" + rowId, null, null, null, null, null);
if(c != null)
{
c.moveToFirst();
}
return c;
}
public boolean updateEvent(long rowId, String title, String location, int starttime, int endtime)
{
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
args.put(KEY_LOCATION, location);
args.put(KEY_START, starttime);
args.put(KEY_END, endtime);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}
}
As you can see above, I have managed to store text values from the EditText into the database successfully. So now I am trying to store the starttime(Integer) into database.
Any help will be greatly appreciated. Thanks a bunch!
Upvotes: 0
Views: 5895
Reputation: 11053
I don't see a problem storing integers - however time is not equivalent to integer.
You have 2 possibilities to store dates/time values. Either get the components and store each of the separately like year,month,day,minute,second or store it as a string - but you can't store date/time with ONE single integer.
Upvotes: 0
Reputation: 1279
I guess your real Question is "How to store a TIME or DATE in the SQLite database"? You need to convert those into integer to store them, and convert back to whatever you for reading. Please check chapter 1.2 of the SQLite documentation on that topic: http://www.sqlite.org/datatype3.html
Upvotes: 1