How do I use SQLite in android?
I’ve founde already a few answers to this topic (for example this), but it is not working. I only get the warning, that it cannot resolve the method ‘openOrCreateDatabase(java.lang.String, int, null)’. Here is my sourcecode:
8 Answers 8
SQLite is a opensource SQL database that stores data to a text file on a device. Android comes in with built in SQLite database implementation.
public class MySQLiteHelper extends SQLiteOpenHelper < public static final String TABLE_COMMENTS = "comments"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_COMMENT = "comment"; private static final String DATABASE_NAME = "commments.db"; private static final int DATABASE_VERSION = 1; // Database creation sql statement private static final String DATABASE_CREATE = "create table " + TABLE_COMMENTS + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_COMMENT + " text not null);"; public MySQLiteHelper(Context context) < super(context, DATABASE_NAME, null, DATABASE_VERSION); >@Override public void onCreate(SQLiteDatabase database) < database.execSQL(DATABASE_CREATE); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) < Log.w(MySQLiteHelper.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMMENTS); onCreate(db); >>
As the commenter has given you the example, you will need to create a subclass of SQLiteOpenHelper class and override the onCreate and onUpgrade methods which will create your database and tables. Then you can use the method getReadableDatabase( ) or getWritableDatabase() of this helper class to get copy of a SQLite database. You can execute the queries on this object. The code snippet below demonstrates it.
public class DBAdapter < private SQLiteDatabase database; private Context context; private DatabaseHelper dbHelper; private class DatabaseHelper extends SQLiteOpenHelper < public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) < super(context, name, factory, version); >@Override public void onCreate(SQLiteDatabase db) < db.execSQL(CREATE_TABLES_QUERY); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) < db.execSQL("DROP TABLE IF EXIST "+TABLE_QUERY); >> public DBAdapter(Context ctx) < this.context = ctx; >public DBAdapter open() throws SQLException < dbHelper = new DatabaseHelper(context, DBNAME, null,DBVERSION); database = dbHelper.getWritableDatabase(); return this; >public Cursor executeQuery() < Cursor result = database.rawQuery(YOUR_QUERY, null); return result; >>
public class Sqlhelper extends SQLiteOpenHelper < private SQLiteDatabase db; public static final String KEY_ROWID = "_id"; public static final String KEY_FNAME = "firstname"; Sqlhelper DB = null; private static final String DATABASE_NAME = "dbname.db"; private static final int DATABASE_VERSION = 2; public static final String DATABASE_TABLE_NAME = "db"; private static final String DATABASE_TABLE_CREATE = "CREATE TABLE " + DATABASE_TABLE_NAME + "(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "firstname TEXT NOT NULL);"; public Sqlhelper(Context context) < super(context, DATABASE_NAME, null, DATABASE_VERSION); >@Override public void onCreate(SQLiteDatabase db) < try< db.execSQL(DATABASE_TABLE_CREATE); Log.d("DATABASE", "Table Was Created"); >catch(Exception e) < e.printStackTrace(); >> public void open() < getWritableDatabase(); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
Create «database» name package and include it
Create SQLitHelper name class
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SQLitHelper extends SQLiteOpenHelper < public static final String DataBase_Name = "ABC"; public static final int Version = 1; public static final String TblUser = "TblUser"; public static final String TblClassList = "TblClassList"; public static final String TblStudentList = "TblStudentList"; public SQLitHelper(Context context) < super(context, DataBase_Name, null, Version); >@Override public void onCreate(SQLiteDatabase db) < db.execSQL("Create table " + TblUser + "(id INTEGER PRIMARY KEY," + "uid INTEGER," + "fname TEXT," + "lname TEXT," + "email TEXT," + "password TEXT," + "teacher TEXT," + "student TEXT," + "parent TEXT," + "status TEXT," + "landing_page TEXT," + "createdate TEXT," + "birthdate TEXT," + "profilepic TEXT," + "phone TEXT," + "address TEXT," + "gender TEXT," + "age TEXT," + "googleid TEXT," + "facebookid TEXT," + "alert_time TEXT," + "sch_name TEXT,"+ "login_with TEXT,"+ "default_zone TEXT)"); db.execSQL("Create table " + TblClassList + "(id INTEGER PRIMARY KEY," + "cid INTEGER," + "uid INTEGER," + "title TEXT," + "color TEXT," + "startdate TEXT," + "enddate TEXT," + "qrcode TEXT," + "createdate TEXT," + "not_submitted_count TEXT," + "status TEXT," + "extra1 TEXT," + "extra2 TEXT)"); db.execSQL("Create table " + TblStudentList + "(id INTEGER PRIMARY KEY," + "uid INTEGER," + "cid INTEGER," + "fname TEXT," + "lname TEXT," + "email TEXT," + "profilepic TEXT," + "student_name TEXT," + "isleader TEXT," + "add_homework TEXT," + "track_submission TEXT," + "status TEXT," + "edit_homework TEXT," + "del_homework TEXT," + "last_access TEXT)"); >@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) < >>
Create DataHelper class
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import java.util.ArrayList; import java.util.HashMap; public class DataHelper < SQLitHelper sqLitHelper; SQLiteDatabase sqLiteDatabase; Context context; final String TAG = "DataHelper"; public DataHelper(Context context) < sqLitHelper = new SQLitHelper(context); this.context = context; sqLiteDatabase = sqLitHelper.getWritableDatabase(); >public void open() < try < sqLiteDatabase = sqLitHelper.getWritableDatabase(); >catch (Exception e) < e.printStackTrace(); >> public void close() < try < sqLiteDatabase.close(); >catch (Exception e) < e.printStackTrace(); >> public void insertUser(HashMap list) < ContentValues values = new ContentValues(); open(); try < for (String str : list.keySet()) values.put(str, list.get(str)); long rowId = sqLiteDatabase.insert(SQLitHelper.TblUser, null, values); >catch (Exception e) < Log.e(TAG, "insertUser " + e.toString()); >finally < close(); >> public void updateUser(HashMap list, int uid) < ContentValues values = new ContentValues(); open(); try < for (String str : list.keySet()) values.put(str, list.get(str)); long rows = sqLiteDatabase.update(SQLitHelper.TblUser, values, "uid=" + uid, null); >catch (Exception e) < Log.e(TAG, "insertUser " + e.toString()); >finally < close(); >> public int getUserRecordCount() < int count = 0; try < open(); Cursor cursor = sqLiteDatabase.rawQuery("Select * from " + SQLitHelper.TblUser, null); count = cursor.getCount(); cursor.close(); >catch (Exception e) < Logger.debugLog(TAG, "userCount : " + e.toString()); >finally < close(); >return count; > public HashMap getUserDetail() < HashMaplist = new HashMap<>(); Cursor cursor = null; try < open(); cursor = sqLiteDatabase.rawQuery("SELECT * FROM " + SQLitHelper.TblUser, null); if (cursor.getColumnCount() >0) < while (cursor.moveToNext()) < list.put("uid", cursor.getString(cursor.getColumnIndex("uid"))); list.put("fname", cursor.getString(cursor.getColumnIndex("fname"))); list.put("lname", cursor.getString(cursor.getColumnIndex("lname"))); list.put("default_zone", cursor.getString(cursor.getColumnIndex("default_zone"))); list.put("teacher", cursor.getString(cursor.getColumnIndex("teacher"))); list.put("student", cursor.getString(cursor.getColumnIndex("student"))); list.put("parent", cursor.getString(cursor.getColumnIndex("parent"))); list.put("email", cursor.getString(cursor.getColumnIndex("email"))); list.put("gender", cursor.getString(cursor.getColumnIndex("gender"))); list.put("birthdate", cursor.getString(cursor.getColumnIndex("birthdate"))); list.put("profilepic", cursor.getString(cursor.getColumnIndex("profilepic"))); list.put("sch_name", cursor.getString(cursor.getColumnIndex("sch_name"))); list.put("login_with", cursor.getString(cursor.getColumnIndex("login_with"))); >> > catch (Exception e) < Logger.debugLog(TAG, "getUserDetail : " + e.toString()); >finally < close(); if (cursor != null) if (!cursor.isClosed()) cursor.close(); >return list; > public boolean deleteUserList() < try < open(); if (sqLiteDatabase.delete(SQLitHelper.TblUser, null, null) >0)< return true; >else < return false; >> catch (Exception e) < Logger.debugLog(TAG, "deleteUserList : " + e.toString()); >finally < close(); >return false; > public boolean insertClassList(MClassList mClassList) < try < open(); ContentValues contentValues = new ContentValues(); contentValues.put("cid", mClassList.getId()); contentValues.put("uid", mClassList.getUid()); contentValues.put("title", mClassList.getTitle()); contentValues.put("color", mClassList.getColor()); contentValues.put("startdate", mClassList.getStartdate()); contentValues.put("enddate", mClassList.getEnddate()); contentValues.put("qrcode", mClassList.getQrcode()); contentValues.put("createdate", mClassList.getCreatedate()); contentValues.put("status", mClassList.getStatus()); contentValues.put("not_submitted_count", mClassList.getNot_sub_count()); long null, contentValues); Logger.debugLog(TAG, "insertClassList : Sus"); return true; >catch (Exception e) < Logger.debugLog(TAG, "insertClassList : " + e.toString()); >finally < close(); >return false; > public ArrayList getClassList() < ArrayListclssArrayList = new ArrayList<>(); Cursor cursor = null; try < open(); String Query = QueryBuilder.classListQuery(); cursor = sqLiteDatabase.rawQuery(Query, null); if (cursor.getColumnCount() >0) < while (cursor.moveToNext()) < MClassList mClassList = new MClassList(); mClassList.setId(cursor.getInt(cursor.getColumnIndex("cid"))); mClassList.setUid(cursor.getInt(cursor.getColumnIndex("uid"))); mClassList.setTitle(cursor.getString(cursor.getColumnIndex("title"))); mClassList.setColor(cursor.getString(cursor.getColumnIndex("color"))); mClassList.setStartdate(cursor.getString(cursor.getColumnIndex("startdate"))); mClassList.setEnddate(cursor.getString(cursor.getColumnIndex("enddate"))); mClassList.setQrcode(cursor.getString(cursor.getColumnIndex("qrcode"))); mClassList.setCreatedate(cursor.getString(cursor.getColumnIndex("createdate"))); mClassList.setStatus(cursor.getString(cursor.getColumnIndex("status"))); mClassList.setNot_sub_count(cursor.getString(cursor.getColumnIndex("not_submitted_count"))); clssArrayList.add(mClassList); >> > catch (Exception e) < Logger.debugLog(TAG, "getClassList : " + e.toString()); >finally < close(); if (cursor != null) if (!cursor.isClosed()) cursor.close(); >return clssArrayList; > public boolean deleteClassList() < try < open(); if (sqLiteDatabase.delete(SQLitHelper.TblClassList, null, null) >0)< return true; >else < return false; >> catch (Exception e) < Logger.debugLog(TAG, "deleteClassList : " + e.toString()); >finally < close(); >return false; > public boolean deleteStudentList() < try < open(); if (sqLiteDatabase.delete(SQLitHelper.TblStudentList, null, null) >0) < return true; >else < return false; >> catch (Exception e) < Logger.debugLog(TAG, "deleteStudentList : " + e.toString()); >finally < close(); >return false; > public void deleteStudent(int cid,int uid) < try < open(); sqLiteDatabase.delete(SQLitHelper.TblStudentList, "uid=" + uid + " AND cid=" + cid, null); >catch (Exception e) < Logger.debugLog(TAG, "deleteStudent : " + e.toString()); >finally < close(); >> >
Create class QueryBuilder
public class QueryBuilder < public static String teacherABCList(int cid) < Calendar c = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String formatDate = df.format(c.getTime()).toString(); String Query = "SELECT * FROM " + SQLitHelper.TblTeacherHomeworkAll + " WHERE cid='" + cid + "'" + " AND duedate>= " +"'"+ formatDate+"'" + " ORDER BY duedate DESC "; return Query; > ============================== public static String studentXXXListQuery(int uid,String status) < Calendar c = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String formatDate = df.format(c.getTime()).toString(); String Query = "SELECT * FROM " + SQLitHelper.TblStudentHomeworkAll + " WHERE uid='" + uid + "'" + " AND status= " +"'"+ status+"'"+" AND isDone='N'" + " ORDER BY duedate DESC "; return Query; >=========================================== public static String studentListQuery(String questionID) < String query = "SELECT * FROM " + SQLitHelper.TblStudentCheckAnswer + " WHERE qid mt24"> )" data-controller="se-share-sheet" data-se-share-sheet-title="Share a link to this answer" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Share answered Jan 4, 2018 at 13:00 Ranjit BarveRanjit Barve 41 1 bronze badge