I want to store data in sqlite database from webservice. How to achieve this? Following is my SQLiteDB class. Please tell me what I am doing wrong? Any help would be much appreciated. Thank you in advance.
public class SQLiteDB {
public static final String KEY_MERCHANT_KIOSK_ID = "merchant_kiosk_id";
public static final String KEY_MERCHANT_LOCATION_ID = "merchant_location_id";
public static final String KEY_USER_ID= "user_id";
public static final String KEY_NUMBER_OF_CHECKIN= "no_of_checkin";
public static final String KEY_FREE_GIFT = "free_gift";
public static final String KEY_VALID_DAYS= "valid_days";
public static final String KEY_CHECKIN_TIME_LIMIT= "checkin_time_limit";
public static final String KEY_BUSINESS_LOGO= "business_logo";
public static final String KEY_COUPON_ID="coupon_id";
public static final String KEY_COUPON_KEYWORD="coupon_keyword";
public static final String KEY_RANDOM_COUPON_CODE="random_coupon_code";
public static final String KEY_MERCHANT_ID="merchant_id";
public static final String KEY_ORGANIZATION_NAME="organization_name";
public static final String KEY_STATUS="status";
public static final String KEY_URL="url";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "SQLiteDB";
private static final String DATABASE_TABLE = "kiosktable";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table kiosktable (merchant_kiosk_id text primary key, " +
"merchant_location_id text not null, " +
"user_id text not null, " +
"no_of_checkin text not null, " +
"free_gift text not null, " +
"valid_days text not null, " +
"checkin_time_limit text not null, " +
"business_logo text not null, " +
"coupon_id text not null, " +
"coupon_keyword text not null, " +
"random_coupon_code text not null, " +
"merchant_id text not null, " +
"organization_name text not null, " +
"status text not null, " +
"url text not null );";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public SQLiteDB(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 kiosktable");
onCreate(db);
}
}
//---open SQLite DB---
public SQLiteDB open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
//---close SQLite DB---
public void close() {
DBHelper.close();
}
//---insert data into SQLite DB---
public long insert(Integer merchant_kiosk_id, Integer merchant_location_id,
Integer user_id, Integer no_of_checkin, String free_gift, Integer valid_days,
Integer checkin_time_limit, String business_logo, Integer coupon_id,
int i, Integer random_coupon_code, Integer merchant_id,
String organization_name, Integer status, String url) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_MERCHANT_KIOSK_ID, merchant_kiosk_id);
initialValues.put(KEY_MERCHANT_LOCATION_ID, merchant_location_id);
initialValues.put(KEY_USER_ID, user_id);
initialValues.put(KEY_NUMBER_OF_CHECKIN, no_of_checkin);
initialValues.put(KEY_FREE_GIFT, free_gift);
initialValues.put(KEY_VALID_DAYS, valid_days);
initialValues.put(KEY_CHECKIN_TIME_LIMIT, checkin_time_limit);
initialValues.put(KEY_BUSINESS_LOGO, business_logo);
initialValues.put(KEY_COUPON_ID, coupon_id);
initialValues.put(KEY_COUPON_KEYWORD, i);
initialValues.put(KEY_RANDOM_COUPON_CODE, random_coupon_code);
initialValues.put(KEY_MERCHANT_ID, merchant_id);
initialValues.put(KEY_ORGANIZATION_NAME, organization_name);
initialValues.put(KEY_STATUS, status);
initialValues.put(KEY_URL, url);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---Delete All Data from table in SQLite DB---
public void deleteAll() {
db.delete(DATABASE_TABLE, null, null);
}
}
Below is my main class, where I am interacting with the web service.
try {
String url1 = edit_messageurl.getText().toString();
HttpClient httpclient = new DefaultHttpClient();
String httppostURL = "http: ...";
HttpPost httppost = new HttpPost(httppostURL);
Log.v(TAG, "postURL: " + httppost);
JSONObject data1 = new JSONObject();
data1.put("merchant_kiosk_url", url1);
JSONArray jsonArray = new JSONArray();
jsonArray.put(data1);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("data", data1.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
httppost.setHeader(HTTP.CONTENT_TYPE,"application/x-www-form-urlencoded;charset=UTF-8");
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
String responseStr = EntityUtils.toString(resEntity).trim();
Log.v(TAG, "Response: " + responseStr);
Log.i("TAG",""+response.getStatusLine().getStatusCode());
// Toast.makeText(UrlActivity.this, responseStr, Toast.LENGTH_LONG).show();
// you can add an if statement here and do other actions based on the response
{
try
{
JSONObject mainObject = new JSONObject(responseStr);
String url = mainObject.getString("url");
if(url.equals("valid")){
ProgressBar1.setVisibility(View.GONE);
Toast.makeText(UrlActivity.this, responseStr, Toast.LENGTH_LONG).show();
try
{
sqlite();
Toast.makeText(getBaseContext(), "Stored in SQLite DB", Toast.LENGTH_SHORT).show();
} catch (android.database.sqlite.SQLiteException e) {
Log.e(TAG, "SQLiteException:" + e.getMessage());
}catch (Exception e) {
Log.e(TAG, "Exception:" + e.getMessage());
}
}
else if(url.equals("invalid")){
ProgressBar1.setVisibility(View.GONE);
Toast.makeText(UrlActivity.this,"Invalid URL", Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
ProgressBar1.setVisibility(View.GONE);
Toast.makeText(UrlActivity.this,"Invalid URL", Toast.LENGTH_LONG).show();
}
}
}
edit_messageurl.setText(""); //reset the message text field
//Toast.makeText(UrlActivity.this, "Data: " +data1,Toast.LENGTH_LONG).show();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Throwable t) {
Toast.makeText(UrlActivity.this, "Request failed: " + t.toString(),
Toast.LENGTH_LONG).show();
}
}
private void sqlite() {
// TODO Auto-generated method stub
sqlite_obj.open();
sqlite_obj.deleteAll();
for(int i=0; i<list1.size(); i++) {
sqlite_obj.insert(i, i, i, i, list1.get(i).toString(), i, i, list2.get(i).toString(), i, i, i, i, list3.get(i).toString(), i, list4.get(i).toString());
}
sqlite_obj.close();
}
});
Aucun commentaire:
Enregistrer un commentaire