reference :
http://stackoverflow.com/a/8889012
http://commonsware.com/cwac
http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html
	
		
	
		
	
		
	
		
	
		
	
		
	
		
			
			http://stackoverflow.com/a/8889012
http://commonsware.com/cwac
http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html
AndroidManifest.xml
		JavaScript:
	
	    //at MANIFEST
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <application
        android:name=".Dynomite"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
	Dynomite.java
		JavaScript:
	
	public class Dynomite extends Application {
	private static SQLiteDatabase database = null;
	private static SQLiteHelper dbHelper = null;
	@Override
	public void onCreate() {
		super.onCreate();
	}
	// method to get the sqlite db instance
	public SQLiteDatabase getSQLiteInstance() {
		if (database == null) {
			dbHelper = new SQLiteHelper(this.getApplicationContext());
			database = dbHelper.getWritableDatabase();
			// enable Foreign Keys [http://www.sqlite.org/foreignkeys.html]
			database.execSQL("PRAGMA foreign_keys = ON");
		}
		return database;
	}
	// method to close
	public void closeDB() {
		dbHelper.close();
	}
}
	SQLiteHelper.java
		JavaScript:
	
	//automatic generated by https://www.pipiscrew.com/works/sqlite-manager-v1-0/
import java.io.File;
import java.io.InputStream;
import com.x.gr.R;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
public class SQLiteHelper extends SQLiteOpenHelper {
	private Context c=null;
	////////////////// AUTOMOTODETAILS //////////////////
	public static final String TABLE_AUTOMOTODETAILS = "AUTOMOTODETAILS";
	public static final String AUTOMOTODETAIL_ID = "AUTOMOTODETAIL_ID";
	public static final String DATEREC = "DATEREC";
	public static final String KM_COUNTER = "KM_COUNTER";
	public static final String FIXES = "FIXES";
//	public static final String COMMENT = "COMMENT";
	////////////////// AUTOMOTOS //////////////////
	public static final String TABLE_AUTOMOTOS = "AUTOMOTOS";
	public static final String AUTOMOTO_ID = "AUTOMOTO_ID";
	public static final String DESCRIPTION = "DESCRIPTION";
	public static final String PLATE = "PLATE";
//	public static final String COUNTRY_ID = "COUNTRY_ID";
	public static final String COMMENT = "COMMENT";
	public static final String AUTOMOTO_DATEREC = "AUTOMOTO_DATEREC";
	////////////////// COUNTRIES //////////////////
	public static final String TABLE_COUNTRIES = "COUNTRIES";
	public static final String COUNTRY_ID = "COUNTRY_ID";
	public static final String COUNTRY_NAME = "COUNTRY_NAME";
	public static final String COUNTRY_sort_ORDER = "COUNTRY_sort_ORDER";
	////////////////// SETTINGS //////////////////
	public static final String TABLE_SETTINGS = "SETTINGS";
	public static final String SETTING_ID = "SETTING_ID";
	public static final String USERNAME = "USERNAME";
	public static final String PASSWORD = "PASSWORD";
	//public static final String  DATABASE_FILE_PATH = Environment.getExternalStorageDirectory().toString();
	private static final String DATABASE_NAME = "x.db";
	private static final int DATABASE_VERSION = 1;
	// Database creation sql statement
	private static final String DATABASE_CREATE = "CREATE TABLE [AUTOMOTODETAILS] (" +
				"automotodetail_id INTEGER PRIMARY KEY, " + 
		"daterec TEXT, " + 
		"km_counter TEXT, " + 
		"fixes TEXT, " + 
		"comment TEXT);CREATE TABLE [AUTOMOTOS] (" +
				"automoto_id INTEGER PRIMARY KEY, " + 
		"description TEXT, " + 
		"plate TEXT, " + 
		"country_id INTEGER, " + 
		"comment TEXT, " + 
		"automoto_daterec TEXT, " + 
		"FOREIGN KEY(country_id) REFERENCES countries(country_id));CREATE TABLE [COUNTRIES] (" +
				"country_id INTEGER PRIMARY KEY, " + 
		"country_name TEXT, " + 
		"country_sort_order INTEGER);CREATE TABLE [SETTINGS] (" +
				"setting_id INTEGER PRIMARY KEY, " + 
		"username TEXT, " + 
		"password TEXT);";
	public SQLiteHelper(Context context) {
//		super(context, DATABASE_FILE_PATH
//	            + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
		//internal storage (can be viewed only when rooted)
		//location : data/user/0/x.gr
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
		
		c= context;
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.beginTransaction();
		try {
			String[] queries = DATABASE_CREATE.split(";");
			for (String query : queries)
				db.execSQL(query);
			//Add predefined records to tables (TSQL already stored as resource file)
			InputStream Stream = c.getResources().openRawResource(R.raw.countries);
			String countries_predefined_sql = General.convertStreamToString(Stream);
			queries = countries_predefined_sql.split(";");
			for (String query : queries)
				db.execSQL(query);
			
			db.setTransactionSuccessful();
		} finally {
			db.endTransaction();
		}
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//		db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMMENTS);
//		onCreate(db);
	}
	
}
	R.raw.countries
		JavaScript:
	
	PRAGMA foreign_keys = OFF;
INSERT INTO "main"."countries" VALUES (1, 'Afghanistan', null);
.
.
.
INSERT INTO "main"."countries" VALUES (81, 'Greece', null);
	CountriesDatasource.java
		JavaScript:
	
	//automatic generated by https://www.pipiscrew.com/works/sqlite-manager-v1-0/
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class CountriesDatasource {
	private SQLiteDatabase database;
	private static final String[] allColumns = { SQLiteHelper.COUNTRY_ID, SQLiteHelper.COUNTRY_NAME, SQLiteHelper.COUNTRY_sort_ORDER };
	 public CountriesDatasource(Context c) {
		 database = ((Dynomite) c.getApplicationContext()).getSQLiteInstance();
	 }
	public Countries createCountries(Countries countries) {
		ContentValues values = new ContentValues();
		values.put(SQLiteHelper.COUNTRY_NAME, countries.getcountry_name());
		values.put(SQLiteHelper.COUNTRY_sort_ORDER, countries.getcountry_sort_order());
		long insertId = database.insert(SQLiteHelper.TABLE_COUNTRIES, null, values);
		Cursor cursor = database.query(SQLiteHelper.TABLE_COUNTRIES, allColumns, SQLiteHelper.COUNTRY_ID + " = " + insertId, null, null, null, null);
		cursor.moveToFirst();
		Countries countriesRET = cursorToCountries(cursor);
		cursor.close();
		return countriesRET;
	}
	public int updateCountries(Countries countries) {
		ContentValues values = new ContentValues();
		values.put(SQLiteHelper.COUNTRY_NAME, countries.getcountry_name());
		values.put(SQLiteHelper.COUNTRY_sort_ORDER, countries.getcountry_sort_order());
		return database.update(SQLiteHelper.TABLE_COUNTRIES, values, SQLiteHelper.COUNTRY_ID + " = ?", new String[] { String.valueOf(countries.getcountry_id()) });
	}
	public void deleteCountries(long ID) {
		database.delete(SQLiteHelper.TABLE_COUNTRIES, SQLiteHelper.COUNTRY_ID + " = " + ID, null);
	}
	public List<Countries> getAllCountriess() {
		List<Countries> countriess = new ArrayList<Countries>();
		Countries countries = null;
		Cursor cursor = database.query(SQLiteHelper.TABLE_COUNTRIES, allColumns, null, null, null, null, null);
		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {
			countries = cursorToCountries(cursor);
			countriess.add(countries);
			cursor.moveToNext();
		}
		// Make sure to close the cursor
		cursor.close();
		return countriess;
	}
	private Countries cursorToCountries(Cursor cursor) {
		Countries countries = new Countries();
		countries.setcountry_id(cursor.getLong(0));
		countries.setcountry_name(cursor.getString(1));
		countries.setcountry_sort_order(cursor.getLong(2));
		return countries;
	}
	public Countries getID(long ID) {
		Cursor c = database.rawQuery("select country_id as [country_id],country_name as [country_name],country_sort_order as [country_sort_order] from COUNTRIES where COUNTRY_ID=" + ID, null);
		c.moveToFirst();
		return cursorToCountries(c);
	}
	public Cursor countriessCursor() {
		Cursor c = database.rawQuery("select COUNTRY_ID as _id, country_name as [country_name],country_sort_order as [country_sort_order]  from COUNTRIES", null);
		// database.query("COUNTRIES",allColumns, null, null, null,null,null);
		c.moveToFirst();
		return c;
	}
}
	MainActivity.java
		JavaScript:
	
	public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		CountriesDatasource x =  new CountriesDatasource(MainActivity.this);
		List<Countries> t =  x.getAllCountriess();
		
		for (Countries countries : t) {
			Log.w(String.valueOf( countries.getcountry_id()), countries.getcountry_name());
		}
	}
}
	Countries.java
		JavaScript:
	
	//automatic generated by https://www.pipiscrew.com/works/sqlite-manager-v1-0/
public class Countries {
	private long country_id;
	private String country_name;
	private long country_sort_order;
	public Countries() {
	}
	public Countries(String country_name, long country_sort_order) {
		this.country_name = country_name;
		this.country_sort_order = country_sort_order;
	}
	public long getcountry_id() {
		return country_id;
	}
	public void setcountry_id(long country_id) {
		this.country_id = country_id;
	}
	public String getcountry_name() {
		return country_name;
	}
	public void setcountry_name(String country_name) {
		this.country_name = country_name;
	}
	public long getcountry_sort_order() {
		return country_sort_order;
	}
	public void setcountry_sort_order(long country_sort_order) {
		this.country_sort_order = country_sort_order;
	}
}