├── .gitignore ├── .idea ├── codeStyles │ └── Project.xml ├── dictionaries │ └── adt.xml ├── gradle.xml ├── jarRepositories.xml ├── misc.xml └── runConfigurations.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── sqliteexample │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── sqliteexample │ │ │ ├── DatabaseHelperClass.java │ │ │ ├── EmployeeAdapterClass.java │ │ │ ├── EmployeeModelClass.java │ │ │ ├── MainActivity.java │ │ │ └── ViewEmployeeActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_view_employee.xml │ │ └── employee_item_list.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── sqliteexample │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── sqllite.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | xmlns:android 11 | 12 | ^$ 13 | 14 | 15 | 16 |
17 |
18 | 19 | 20 | 21 | xmlns:.* 22 | 23 | ^$ 24 | 25 | 26 | BY_NAME 27 | 28 |
29 |
30 | 31 | 32 | 33 | .*:id 34 | 35 | http://schemas.android.com/apk/res/android 36 | 37 | 38 | 39 |
40 |
41 | 42 | 43 | 44 | .*:name 45 | 46 | http://schemas.android.com/apk/res/android 47 | 48 | 49 | 50 |
51 |
52 | 53 | 54 | 55 | name 56 | 57 | ^$ 58 | 59 | 60 | 61 |
62 |
63 | 64 | 65 | 66 | style 67 | 68 | ^$ 69 | 70 | 71 | 72 |
73 |
74 | 75 | 76 | 77 | .* 78 | 79 | ^$ 80 | 81 | 82 | BY_NAME 83 | 84 |
85 |
86 | 87 | 88 | 89 | .* 90 | 91 | http://schemas.android.com/apk/res/android 92 | 93 | 94 | ANDROID_ATTRIBUTE_ORDER 95 | 96 |
97 |
98 | 99 | 100 | 101 | .* 102 | 103 | .* 104 | 105 | 106 | BY_NAME 107 | 108 |
109 |
110 |
111 |
112 |
113 |
-------------------------------------------------------------------------------- /.idea/dictionaries/adt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 1.8 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SQLiteExample 2 | Hello Guys,In this 𝐚𝐧𝐝𝐫𝐨𝐢𝐝 𝐬𝐭𝐮𝐝𝐢𝐨 tutorial we will learn to 𝐢𝐧𝐬𝐞𝐫𝐭,𝐮𝐩𝐝𝐚𝐭𝐞,𝐝𝐞𝐥𝐞𝐭𝐞,𝐬𝐞𝐥𝐞𝐜𝐭 data in 𝐒𝐐𝐋𝐢𝐭𝐞 D𝐚𝐭𝐚𝐛𝐚𝐬𝐞.in this example we will store 𝐞𝐦𝐩𝐥𝐨𝐲𝐞𝐞 name,email in to 𝐒𝐐𝐋𝐢𝐭𝐞 D𝐚𝐭𝐚𝐛𝐚𝐬𝐞 and then select and modify data in 𝐒𝐐𝐋𝐢𝐭𝐞 D𝐚𝐭𝐚𝐛𝐚𝐬𝐞 in very simple way. 3 | 4 | 𝐒ᴜʙ𝐒ʀɪʙᴇ My 𝗬𝗢𝗨𝗧𝗨𝗕𝗘 Channel #𝗰𝗼𝗱𝗶𝗻𝗴𝘄𝗶𝘁𝗱𝗲𝘃 for more latest videos.. 5 | Watch Tutorial on - 6 | [Youtube](https://youtu.be/BcpVlXo2F3U) 7 | 8 | 9 | ![GitHub Logo](/sqllite.png) 10 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "29.0.3" 6 | 7 | defaultConfig { 8 | applicationId "com.example.sqliteexample" 9 | minSdkVersion 18 10 | targetSdkVersion 29 11 | versionCode 1 12 | versionName "1.0" 13 | 14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 15 | } 16 | 17 | buildTypes { 18 | release { 19 | minifyEnabled false 20 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 21 | } 22 | } 23 | 24 | } 25 | 26 | dependencies { 27 | implementation fileTree(dir: 'libs', include: ['*.jar']) 28 | 29 | implementation 'androidx.appcompat:appcompat:1.1.0' 30 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 31 | testImplementation 'junit:junit:4.12' 32 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 33 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 34 | //noinspection GradleCompatible 35 | implementation 'com.android.support:design:28.2.1' 36 | } 37 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/example/sqliteexample/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("com.example.sqliteexample", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/sqliteexample/DatabaseHelperClass.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | 4 | import android.content.ContentValues; 5 | import android.content.Context; 6 | import android.database.Cursor; 7 | import android.database.sqlite.SQLiteDatabase; 8 | import android.database.sqlite.SQLiteOpenHelper; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class DatabaseHelperClass extends SQLiteOpenHelper { 14 | 15 | //Database version 16 | private static final int DATABASE_VERSION = 1; 17 | //Database Name 18 | private static final String DATABASE_NAME = "employee_database"; 19 | //Database Table name 20 | private static final String TABLE_NAME = "EMPLOYEE"; 21 | //Table columns 22 | public static final String ID = "id"; 23 | public static final String NAME = "name"; 24 | public static final String EMAIL = "email"; 25 | private SQLiteDatabase sqLiteDatabase; 26 | 27 | 28 | //creating table query 29 | private static final String CREATE_TABLE = "create table " + TABLE_NAME +"("+ID+ 30 | " INTEGER PRIMARY KEY AUTOINCREMENT," + NAME + " TEXT NOT NULL,"+EMAIL+" TEXT NOT NULL);"; 31 | //Constructor 32 | public DatabaseHelperClass (Context context){ 33 | super(context,DATABASE_NAME,null,DATABASE_VERSION); 34 | } 35 | 36 | @Override 37 | public void onCreate(SQLiteDatabase db) { 38 | db.execSQL(CREATE_TABLE); 39 | } 40 | 41 | @Override 42 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 43 | db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME); 44 | onCreate(db); 45 | } 46 | 47 | //Add Employee Data 48 | public void addEmployee(EmployeeModelClass employeeModelClass){ 49 | ContentValues contentValues = new ContentValues(); 50 | contentValues.put(DatabaseHelperClass.NAME, employeeModelClass.getName()); 51 | contentValues.put(DatabaseHelperClass.EMAIL, employeeModelClass.getEmail()); 52 | sqLiteDatabase = this.getWritableDatabase(); 53 | sqLiteDatabase.insert(DatabaseHelperClass.TABLE_NAME, null,contentValues); 54 | } 55 | 56 | public List getEmployeeList(){ 57 | String sql = "select * from " + TABLE_NAME; 58 | sqLiteDatabase = this.getReadableDatabase(); 59 | List storeEmployee = new ArrayList<>(); 60 | Cursor cursor = sqLiteDatabase.rawQuery(sql,null); 61 | if (cursor.moveToFirst()){ 62 | do { 63 | int id = Integer.parseInt(cursor.getString(0)); 64 | String name = cursor.getString(1); 65 | String email = cursor.getString(2); 66 | storeEmployee.add(new EmployeeModelClass(id,name,email)); 67 | }while (cursor.moveToNext()); 68 | } 69 | cursor.close(); 70 | return storeEmployee; 71 | } 72 | 73 | public void updateEmployee(EmployeeModelClass employeeModelClass){ 74 | ContentValues contentValues = new ContentValues(); 75 | contentValues.put(DatabaseHelperClass.NAME,employeeModelClass.getName()); 76 | contentValues.put(DatabaseHelperClass.EMAIL,employeeModelClass.getEmail()); 77 | sqLiteDatabase = this.getWritableDatabase(); 78 | sqLiteDatabase.update(TABLE_NAME,contentValues,ID + " = ?" , new String[] 79 | {String.valueOf(employeeModelClass.getId())}); 80 | } 81 | 82 | public void deleteEmployee(int id){ 83 | sqLiteDatabase = this.getWritableDatabase(); 84 | sqLiteDatabase.delete(TABLE_NAME, ID + " = ? ", new String[] 85 | {String.valueOf(id)}); 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/sqliteexample/EmployeeAdapterClass.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.Button; 9 | import android.widget.EditText; 10 | import android.widget.TextView; 11 | 12 | import androidx.annotation.NonNull; 13 | import androidx.recyclerview.widget.RecyclerView; 14 | 15 | import java.util.List; 16 | 17 | public class EmployeeAdapterClass extends RecyclerView.Adapter { 18 | 19 | List employee; 20 | Context context; 21 | DatabaseHelperClass databaseHelperClass; 22 | 23 | public EmployeeAdapterClass(List employee, Context context) { 24 | this.employee = employee; 25 | this.context = context; 26 | databaseHelperClass = new DatabaseHelperClass(context); 27 | } 28 | 29 | @NonNull 30 | @Override 31 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 32 | LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); 33 | View view = layoutInflater.inflate(R.layout.employee_item_list,parent,false); 34 | ViewHolder viewHolder = new ViewHolder(view); 35 | return viewHolder; 36 | } 37 | 38 | @Override 39 | public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) { 40 | final EmployeeModelClass employeeModelClass = employee.get(position); 41 | 42 | holder.textViewID.setText(Integer.toString(employeeModelClass.getId())); 43 | holder.editText_Name.setText(employeeModelClass.getName()); 44 | holder.editText_Email.setText(employeeModelClass.getEmail()); 45 | 46 | holder.button_Edit.setOnClickListener(new View.OnClickListener() { 47 | @Override 48 | public void onClick(View v) { 49 | String stringName = holder.editText_Name.getText().toString(); 50 | String stringEmail = holder.editText_Email.getText().toString(); 51 | 52 | databaseHelperClass.updateEmployee(new EmployeeModelClass(employeeModelClass.getId(),stringName,stringEmail)); 53 | notifyDataSetChanged(); 54 | ((Activity) context).finish(); 55 | context.startActivity(((Activity) context).getIntent()); 56 | } 57 | }); 58 | 59 | holder.button_delete.setOnClickListener(new View.OnClickListener() { 60 | @Override 61 | public void onClick(View v) { 62 | databaseHelperClass.deleteEmployee(employeeModelClass.getId()); 63 | employee.remove(position); 64 | notifyDataSetChanged(); 65 | } 66 | }); 67 | 68 | } 69 | 70 | @Override 71 | public int getItemCount() { 72 | return employee.size(); 73 | } 74 | 75 | public class ViewHolder extends RecyclerView.ViewHolder{ 76 | TextView textViewID; 77 | EditText editText_Name; 78 | EditText editText_Email; 79 | Button button_Edit; 80 | Button button_delete; 81 | 82 | public ViewHolder(@NonNull View itemView) { 83 | super(itemView); 84 | 85 | textViewID = itemView.findViewById(R.id.text_id); 86 | editText_Name = itemView.findViewById(R.id.edittext_name); 87 | editText_Email = itemView.findViewById(R.id.edittext_email); 88 | button_delete = itemView.findViewById(R.id.button_delete); 89 | button_Edit = itemView.findViewById(R.id.button_edit); 90 | 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/sqliteexample/EmployeeModelClass.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | public class EmployeeModelClass { 4 | 5 | Integer id; 6 | String name; 7 | String email; 8 | 9 | public EmployeeModelClass(String name, String email) { 10 | this.name = name; 11 | this.email = email; 12 | } 13 | 14 | public EmployeeModelClass(Integer id, String name, String email) { 15 | this.id = id; 16 | this.name = name; 17 | this.email = email; 18 | } 19 | 20 | public Integer getId() { 21 | return id; 22 | } 23 | 24 | public void setId(Integer id) { 25 | this.id = id; 26 | } 27 | 28 | public String getName() { 29 | return name; 30 | } 31 | 32 | public void setName(String name) { 33 | this.name = name; 34 | } 35 | 36 | public String getEmail() { 37 | return email; 38 | } 39 | 40 | public void setEmail(String email) { 41 | this.email = email; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/sqliteexample/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.content.Intent; 6 | import android.os.Bundle; 7 | import android.view.View; 8 | import android.widget.Button; 9 | import android.widget.EditText; 10 | import android.widget.Toast; 11 | 12 | public class MainActivity extends AppCompatActivity { 13 | 14 | EditText editText_name,editText_email; 15 | Button button_add,button_view; 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | setContentView(R.layout.activity_main); 20 | 21 | editText_name = findViewById(R.id.edittext_name); 22 | editText_email = findViewById(R.id.edittext_email); 23 | button_add = findViewById(R.id.button_add); 24 | button_view = findViewById(R.id.button_view); 25 | 26 | 27 | button_add.setOnClickListener(new View.OnClickListener() { 28 | @Override 29 | public void onClick(View v) { 30 | String stringName = editText_name.getText().toString(); 31 | String stringEmail = editText_email.getText().toString(); 32 | 33 | if (stringName.length() <=0 || stringEmail.length() <=0){ 34 | Toast.makeText(MainActivity.this, "Enter All Data", Toast.LENGTH_SHORT).show(); 35 | }else { 36 | DatabaseHelperClass databaseHelperClass = new DatabaseHelperClass(MainActivity.this); 37 | EmployeeModelClass employeeModelClass = new EmployeeModelClass(stringName,stringEmail); 38 | databaseHelperClass.addEmployee(employeeModelClass); 39 | Toast.makeText(MainActivity.this, "Add Employee Successfully", Toast.LENGTH_SHORT).show(); 40 | finish(); 41 | startActivity(getIntent()); 42 | } 43 | } 44 | }); 45 | 46 | 47 | button_view.setOnClickListener(new View.OnClickListener() { 48 | @Override 49 | public void onClick(View v) { 50 | Intent intent = new Intent(MainActivity.this,ViewEmployeeActivity.class); 51 | startActivity(intent); 52 | } 53 | }); 54 | 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/sqliteexample/ViewEmployeeActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.sqliteexample; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | import androidx.recyclerview.widget.LinearLayoutManager; 5 | import androidx.recyclerview.widget.RecyclerView; 6 | 7 | import android.os.Bundle; 8 | import android.widget.Toast; 9 | 10 | import java.util.List; 11 | 12 | public class ViewEmployeeActivity extends AppCompatActivity { 13 | 14 | RecyclerView recyclerView; 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | super.onCreate(savedInstanceState); 18 | setContentView(R.layout.activity_view_employee); 19 | 20 | recyclerView = findViewById(R.id.recyclerView); 21 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 22 | recyclerView.setHasFixedSize(true); 23 | 24 | DatabaseHelperClass databaseHelperClass = new DatabaseHelperClass(this); 25 | List employeeModelClasses = databaseHelperClass.getEmployeeList(); 26 | 27 | if (employeeModelClasses.size() > 0){ 28 | EmployeeAdapterClass employeadapterclass = new EmployeeAdapterClass(employeeModelClasses,ViewEmployeeActivity.this); 29 | recyclerView.setAdapter(employeadapterclass); 30 | }else { 31 | Toast.makeText(this, "There is no employee in the database", Toast.LENGTH_SHORT).show(); 32 | } 33 | 34 | 35 | 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 19 | 25 | 26 | 27 |