На этом уроке рассмотрим , как обновлять и удалять строки в базе данных SQLite методами update и delete. Исходный код примера под видео:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <EditText android:id="@+id/etId" android:hint="Id" android:layout_width="match_parent" android:layout_height="wrap_content"> </EditText> <EditText android:id="@+id/etName" android:hint="Name" android:layout_width="match_parent" android:layout_height="wrap_content"> </EditText> <EditText android:id="@+id/etEmail" android:hint="Email" android:layout_width="match_parent" android:layout_height="wrap_content"> </EditText> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btnUpd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Update"> </Button> <Button android:id="@+id/btnDel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Delete"> </Button> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btnAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add"> </Button> <Button android:id="@+id/btnRead" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Read"> </Button> <Button android:id="@+id/btnClear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clear"> </Button> </LinearLayout> </LinearLayout>
package ... import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper{ public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "contactDb"; public static final String TABLE_CONTACTS = "contacts"; public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_MAIL = "mail"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_CONTACTS + "(" + KEY_ID + " integer primary key," + KEY_NAME + " text," + KEY_MAIL + " text" + ")"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists " + TABLE_CONTACTS); onCreate(db); } }
package ... import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ Button btnAdd, btnRead, btnClear, btnUpd, btnDel; EditText etName, etEmail, etId; DBHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAdd = (Button) findViewById(R.id.btnAdd); btnAdd.setOnClickListener(this); btnRead = (Button) findViewById(R.id.btnRead); btnRead.setOnClickListener(this); btnUpd = (Button) findViewById(R.id.btnUpd); btnUpd.setOnClickListener(this); btnDel = (Button) findViewById(R.id.btnDel); btnDel.setOnClickListener(this); btnClear = (Button) findViewById(R.id.btnClear); btnClear.setOnClickListener(this); etName = (EditText) findViewById(R.id.etName); etEmail = (EditText) findViewById(R.id.etEmail); etId = (EditText) findViewById(R.id.etId); dbHelper = new DBHelper(this); } @Override public void onClick(View v) { String name = etName.getText().toString(); String email = etEmail.getText().toString(); String id = etId.getText().toString(); SQLiteDatabase database = dbHelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); switch (v.getId()) { case R.id.btnAdd: contentValues.put(DBHelper.KEY_NAME, name); contentValues.put(DBHelper.KEY_MAIL, email); database.insert(DBHelper.TABLE_CONTACTS, null, contentValues); break; case R.id.btnRead: Cursor cursor = database.query(DBHelper.TABLE_CONTACTS, null, null, null, null, null, null); if (cursor.moveToFirst()) { int idIndex = cursor.getColumnIndex(DBHelper.KEY_ID); int nameIndex = cursor.getColumnIndex(DBHelper.KEY_NAME); int emailIndex = cursor.getColumnIndex(DBHelper.KEY_MAIL); do { Log.d("mLog", "ID = " + cursor.getInt(idIndex) + ", name = " + cursor.getString(nameIndex) + ", email = " + cursor.getString(emailIndex)); } while (cursor.moveToNext()); } else Log.d("mLog","0 rows"); cursor.close(); break; case R.id.btnClear: database.delete(DBHelper.TABLE_CONTACTS, null, null); break; case R.id.btnUpd: if (id.equalsIgnoreCase("")){ break; } contentValues.put(DBHelper.KEY_MAIL, email); contentValues.put(DBHelper.KEY_NAME, name); int updCount = database.update(DBHelper.TABLE_CONTACTS, contentValues, DBHelper.KEY_ID + "= ?", new String[] {id}); Log.d("mLog", "updates rows count = " + updCount); case R.id.btnDel: if (id.equalsIgnoreCase("")){ break; } int delCount = database.delete(DBHelper.TABLE_CONTACTS, DBHelper.KEY_ID + "=" + id, null); Log.d("mLog", "deleted rows count = " + delCount); } dbHelper.close(); } }
case R.id.btnUpd:
if (id.equalsIgnoreCase(«»)){
break;
}
contentValues.put(DBHelper.KEY_MAIL, email);
contentValues.put(DBHelper.KEY_NAME, name);
int updCount = database.update(DBHelper.TABLE_CONTACTS, contentValues, DBHelper.KEY_ID + «= ?», new String[] {id});
Log.d(«mLog», «updates rows count = » + updCount);
break; //НЕТ В КОДЕ, сразу и удаляет)