홈>
방금 안드로이드에서 sqlite를 사용하는 법을 배웠습니다. 삽입 될 때 중복 데이터를 방지하는 방법 .. 같은 데이터 입력이있을 때 데이터를 덮어 쓰게됩니까?
여기서는 코드 스 니펫을 첨부합니다 :
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_FAVORIT_TABLE = "CREATE TABLE " + Constant.favoritDBtable + "("
+ Constant.id_postFav + " INTEGER PRIMARY KEY AUTOINCREMENT," + Constant.titleFav + " TEXT," + Constant.namaPerusahaanFav + " TEXT,"
+ Constant.lokasiFav + " TEXT," + Constant.kriteria_1Fav + " TEXT," + Constant.kriteria_2Fav
+ " TEXT," + Constant.kriteria_3Fav + " TEXT," + Constant.gajiFav + " TEXT," + Constant.img_logoFav
+ " TEXT," + Constant.tanggalFav + " TEXT);";
public String addFavorit(Favorit favorit){
SQLiteDatabase db = this.getWritableDatabase();
// long rows = 0;
ContentValues values = new ContentValues();
values.put(Constant.titleFav, favorit.getTitleFav());
values.put(Constant.namaPerusahaanFav, favorit.getNamaPerusahaanFav());
values.put(Constant.lokasiFav, favorit.getLokasiFav());
values.put(Constant.kriteria_1Fav, favorit.getKriteria_1Fav());
values.put(Constant.kriteria_2Fav, favorit.getKriteria_2Fav());
values.put(Constant.kriteria_3Fav, favorit.getKriteria_3Fav());
values.put(Constant.gajiFav, favorit.getGajiFav());
values.put(Constant.img_logoFav, favorit.getImg_logoFav());
values.put(Constant.tanggalFav, favorit.getTanggalFav());
db.insert(Constant.favoritDBtable, null, values,);
Log.d("Favorit saved: ", "Success 200 OK");
return null;
}
MainActivity.java
@Override
public void onClick(View v) {
if (job.getTitle() != null && job.getLokasi() != null){
saveToFavoritDB();
}
}
private void saveToFavoritDB() {
Favorit favorit = new Favorit();
favorit.setTitleFav(job.getTitle());
favorit.setGajiFav(job.getGaji());
Log.d(TAG, "gaji " + job.getGaji());
db.addFavorit(favorit);
List<Favorit> favList = db.getAllFavorit();
for (Favorit each : favList) {
String log = "ID: " + each.getTitleFav() + ", Name: " + each.getLokasiFav() + ", Phone: " + each.getGajiFav();
Log.d(TAG, "saveToFavoritDB: " + String.valueOf(db.getCountFavorit()));
Log.d(TAG, "Hasil: " + log);
}
}
나를 도와주세요
- 답변 # 1
- 답변 # 2
addFavorit
를 진행하기 전에 메소드를 사용하면 중복을 방지하기 위해 하나의 메소드를 추가하여 데이터가 이미 존재하는지 확인할 수 있습니다.boolean check; check = checkDuplicate(...,...,...,id_post); // check whether data exists if(check == true) // if exists { Toast.makeText(MainActivity.this, " Data Already Exists", Toast.LENGTH_LONG).show(); }else{ db.addFavorit(favorit); } public static boolean checkDuplicate(String TableName,String dbfield, String fieldValue, int id_post) { String Query = ".... WHERE "+ Constant.id_postFav +"="+ id_post; // your query Cursor cursor = db.rawQuery(Query, null); if(cursor.getCount() <= 0){ cursor.close(); return false; } cursor.close(); return true; }
- 답변 # 3
IsItemExist()
메소드 작성 당신의DatabaseHelper
에서IsItemExist(name,mobile)
와 같은 활동 클래스 에서이 메소드를 호출하십시오.public boolean IsItemExist(String name,String mobile) { try { SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.rawQuery("SELECT "+NAME+" FROM "+TABLE+" WHERE "+NAME+"=?",new String[]{name}); Cursor cursor1=db.rawQuery("SELECT "+MOBILE+" FROM "+TABLE+" WHERE "+MOBILE+"=?",new String[]{mobile}); if (cursor.moveToFirst() && cursor1.moveToFirst()) { db.close(); Log.d("Record Already Exists", "Table is:"+TABLE+" ColumnName:"+NAME); return true;//record Exists } Log.d("New Record ", "Table is:"+TABLE+" ColumnName:"+NAME+" Column Value:"+NAME); db.close(); } catch(Exception errorException) { Log.d("Exception occured", "Exception occured "+errorException); // db.close(); } return false; }
관련 자료
- java - where 절을 사용하여 Android에서 sqlite 쿼리를 실행할 때 결과가 없습니다
- android two buildTypes - 안드로이드 두 가지 buildtypes - 오류 : 중복 수업
- 변수가있는 Python SQLite 삽입 데이터
- java - android sqlite - sqlite에서 두 항목의 차이를 계산하는 방법은 무엇입니까?
- java - Android SQLite에서 onCreate ()에도 새 열을 추가해야합니까?
- indexing - 인덱스에 중복 항목이있는 MySQL 삽입 실패
- typescript - 결합 된 객체에서 중복 키 방지, {[t의 키에서 k] - t [k]}
- android - SQLite에 배열을 삽입하는 방법은 무엇입니까?
- java - 어떻게? Retrofit2를 사용하여 Android에서 mySQL 데이터베이스로 현재 날짜 삽입
- python - 삽입 중복 키 삽입 새로운 무언가
- INSERT에 대한 SQL 주입을 SQLite에서 작동시키는 방법
- android 안드로이드 스튜디오에서 목록보기 항목을 복제하고 하나의 목록보기에서 두 개의 Arraylist를 수정하는 방법
- sqlite - 안드로이드의"no such table"
- SQLite - sqlite - 인서트에서 특정 날짜에 요일 추가
- Android 파이 이상에서 Android Sqlite 앱이 충돌하면 SQLiteDiskIOException이 발생 함 (코드 522)
- android - SQLite 데이터베이스에 값을 삽입하면 왜 null로 설정됩니까?
- 안드로이드에서 Sqlite 데이터베이스를 당기면 빈 데이터베이스가 제공됩니다
- Android 앱 코드 축소 기 R8이 줄 번호를 변경하지 못하게하는 방법이 있습니까?
- 데이터베이스에서 Android Sqlite 업그레이드시 테이블 삭제
- python - Django에서 SQLite에 데이터를 삽입하는 방법
관련 질문
- java : onUpgrade Android에 새 열이 추가되지 않습니까?
- java : SQLite는 열 값의 일부로 레code를 필터링합니다.
- java : sqlite db에서 데이터 항목에 액세스하고 변수로 초기화하려면 어떻게 합니까?
- java : Android 그래픽으로 그림판에서 그래프 그리기
- java : bumblebee android studio 버전으로 업데이트할 때 오류 gradle
- java : Icon MenuItem 안드로이드 앱을 변경하는 방법
- java : 앱에 암시적 내부 의도 취약점이 있습니다.
- java : Android 앱 -지도 조각에서 사라지는 Google 지도 위치 마커
- java : URI를 업데이트하려고 할 때 FileNotFoundException이 발생하는 ActivityResultContracts.TakePicture()
- java : android studio에서 SQLite 데이터가 지속되지 않음
행을 검사하는 함수가 db에 있는지의 여부
확인보다
확인하고 삽입합니다