[SQL] 어떻게 sqlite가 테이블 안에 데이터가 있는지 확인할 수 있습니까?
SQL어떻게 sqlite가 테이블 안에 데이터가 있는지 확인할 수 있습니까?
편집하다, 보다 약간 아래에 답변을 기반으로 코드를 변경,하지만 여전히 작동 없어요. 또한 getCount 0> 반환 있다면 말해 로그 메시지를 추가하고, 내가 supect 뭔가를해야만 내 쿼리 잘못 될 수 있도록이었다? 또는 커서 내 사용 ..
나는 테이블을 만들었습니다, 그리고 내가 (배열에 저장되어있는) 일부 삽입 문을 실행하려면 비어 있다면 난 그 비어있는 경우 여부를 확인하시기 바랍니다.
내가 오류가없는 동안 내가이 일을하지 않는 것을 볼 수 있습니다 밖으로 .DB 파일을 풀 때 다음은 내 코드입니다. 어떻게이 문제를 접근하는 것?
public void onCreate(SQLiteDatabase db) {
Log.i("DB onCreate", "Creating the database...");//log message
db.execSQL(createCATBUDTAB);
db.execSQL(createTWOWEETAB);
try{
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);
if (cur.getCount() > 0){
Log.i("DB getCount", " getcount greater than 0");//log message
//do nothing everything's as it should be
}
else{//put in these insert statements contained in the array
Log.i("DB getCount", " getcount less than 0, should read array");//log message
for(int i=0; i<13; i++){
db.execSQL(catInsertArray[i]);
}
}
}catch(SQLiteException e){System.err.println("Exception @ rawQuery: " + e.getMessage());}
}
이 꽤 바보 같은 질문이나 접근 방식 인 경우 죄송합니다, 나는이 모든 새로운입니다. 모든 답변은 많이 감사합니다!
해결법
-
==============================
1.기존 테이블에 쿼리 SELECT COUNT (*)는 NULL을 반환해서는 안됩니다. 행이 테이블에 존재하지 않는 경우,이 값 제로를 포함하는 하나 개의 행을 반환해야합니다.
기존 테이블에 쿼리 SELECT COUNT (*)는 NULL을 반환해서는 안됩니다. 행이 테이블에 존재하지 않는 경우,이 값 제로를 포함하는 하나 개의 행을 반환해야합니다.
반대로, 아닌 값을 가진 행은 비어 있지 있음을 나타냅니다.
두 경우 모두, 한 행은 항상 통과 것을 의미 반환해야
//do nothing everything's as it should be
부분.
있는 그대로를 해결하려면, (당신이 불필요한 가능성이 조금 비효율적 간단하기 때문에 선택 COLUMN_NAME 싶지 않아) 쿼리를 둡니다. (그래서 조심 단지 내 머리에서 테스트)는 항상 하나 개의 행을 반환합니다 SELECT COUNT (*)로두고, 다음과 같은 코드를 사용 :
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null); if (cur != null) { cur.moveToFirst(); // Always one row returned. if (cur.getInt (0) == 0) { // Zero count means empty table. for (int i = 0; i < 13; i++) { db.execSQL (catInsertArray[i]); } } }
-
==============================
2.rawQuery는 첫 번째 항목 앞에 위치하는 커서 객체를 반환 (여기에 대한 추가 정보를 참조하십시오) SELECT COUNT (*)는 항상 결과를 반환합니다 (테이블을 고려하는 것은 존재)
rawQuery는 첫 번째 항목 앞에 위치하는 커서 객체를 반환 (여기에 대한 추가 정보를 참조하십시오) SELECT COUNT (*)는 항상 결과를 반환합니다 (테이블을 고려하는 것은 존재)
내가 할 것입니다 그래서 :
if (cur != null){ cur.moveToFirst(); if (cur.getInt(0) == 0) { // Empty } }
-
==============================
3.paxdiablo 말했듯이, 커서는 null이되지 않습니다. 당신이 할 수있는 것은이 같은 시도이다 :
paxdiablo 말했듯이, 커서는 null이되지 않습니다. 당신이 할 수있는 것은이 같은 시도이다 :
if (cur != null && cur.getCount() > 0){ // do nothing, everything's as it should be }
편집하다
사실 나는 db.query을 사용했다 () 그리고 그것은 나를 위해 일했습니다. 나는 이걸했다.
cursor = db.query(TABLE_NAME, new String[] { KEY_TYPE }, null, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { retVal = true; }
TABLE_NAME 내 테이블과 KEY_TYPE 내 럼 이름이었다
-
==============================
4.이 기록 권리를 가지고 있다면 당신은 의미합니까? 나는이를 시도하고 날 위해 일입니다
이 기록 권리를 가지고 있다면 당신은 의미합니까? 나는이를 시도하고 날 위해 일입니다
dbCur = db.rawQuery("select * from player", null); Log.e("a", ""+dbCur.getCount());
이 테이블의 합계를 표시합니다, 테이블에 기록이없는 경우, 그것은 0을 표시합니다.
-
==============================
5.당신은 수동으로 확인할 수 있습니다 :
당신은 수동으로 확인할 수 있습니다 :
sqlite> Select * from table name
모든 데이터는 해당 테이블이 표시됩니다 존재합니다.
더 이상의 쿼리에 대한 의견을 주시기 바랍니다.
-
==============================
6.검사의 나의 방법은 다음과 같이했다 :
검사의 나의 방법은 다음과 같이했다 :
Cursor cursor = db.query(DbHelper.DB_NAME,DbHelper.DB_C_ID_ONLY,null,null,null,null,null); if(cursor.isAfterLast())
나는 내 경우에는 자동 증가되는 _id 항목을 얻을. DB를 사실 확인 반환을위한 isAfterLast, 비어있는 경우.
-
==============================
7.이 쿼리에 대해 무엇?
이 쿼리에 대해 무엇?
SELECT CASE WHEN EXISTS (SELECT * FROM CAT_BUD_TAB) THEN 1 ELSE 0 END
그것은 빠른 약간의 그 SELECT COUNT (*).
추신 900 만 개 행이있는 테이블에 검사하였습니다.
-
==============================
8.이미 언급 한 또 다른 대안은 기능을 사용하는 것입니다 드 클래스 DatabaseUtils에서 queryNumEntries.
이미 언급 한 또 다른 대안은 기능을 사용하는 것입니다 드 클래스 DatabaseUtils에서 queryNumEntries.
다음 예는 수있다 :
public boolean checkEmpty(SQLiteDatabase db, String table){ return DatabaseUtils.queryNumEntries(db, table) == 0; }
-
==============================
9.자바 프로그램이 나를 위해 일한 :
자바 프로그램이 나를 위해 일한 :
ResultSet rst = stm.executeQuery("SELECT * from Login"); int i = 0; while(rst.next()){ ++i; System.out.println(i); } System.out.println(i); if(i<1){ //No data in the table } else{ //data exists }
-
==============================
10.여기에 내가 무슨 짓을했는지 ...
여기에 내가 무슨 짓을했는지 ...
Cursor cur = db.rawQuery("SELECT count(*) FROM " + SQLHelper.TABLE_CART, null); if (cur != null && cur.moveToFirst() && cur.getInt(0) > 0) { Log.i(getClass().getName(), "table not empty"); } else { Log.i(getClass().getName(), "table is empty"); }
-
==============================
11.내가 이런 짓을 수 있도록 내 애플, 위의 코드를 시도하고 충돌 된 지금은 완벽하게 작동하고!
내가 이런 짓을 수 있도록 내 애플, 위의 코드를 시도하고 충돌 된 지금은 완벽하게 작동하고!
public boolean checkIfEmpty() { Cursor cursor = getDatabase().query(DatabaseHelper.Products.TABLE, DatabaseHelper.Products.COLUMNS, null, null, null, null, null); if (cursor != null) { try { //if it is empty, returns true. cursor.moveToFirst(); if (cursor.getInt(0) == 0) return true; else return false; } //this error usually occurs when it is empty. So i return true as well. :) catch(CursorIndexOutOfBoundsException e) { return true; } } return false; }
-
==============================
12.이 옵션을 사용합니다 :
이 옵션을 사용합니다 :
public Boolean doesRecordExist(String TableName, String ColumnName, String ColumnData) { String q = "Select * FROM "+TableName+" WHERE "+ColumnName+"='"+ColumnData+"';"; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(q, null); if (cursor.moveToFirst()) { return true; } else { return false; } }
예
if (doesRecordExist("student", "name", "John") == true) { //Do Something } else { //Do something }
사용자의 용도에 따라이 수정 :
String q = "Select * FROM "+TableName+" WHERE "+ColumnName+"='"+ColumnData+"';";
-
==============================
13.
public boolean isEmpty(String TableName){ SQLiteDatabase database = this.getReadableDatabase(); return (int) DatabaseUtils.queryNumEntries(database,TableName) == 0; }
from https://stackoverflow.com/questions/4397757/how-can-i-check-to-see-if-my-sqlite-table-has-data-in-it by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 반복의 MyBatis의 foreach에서의 HashMap을 통해? (0) | 2020.05.24 |
---|---|
[SQL] UNION ALL 대 OR 조건 SQL 서버 쿼리 (0) | 2020.05.24 |
[SQL] SQL 뷰에 기본 키를 추가 (0) | 2020.05.24 |
[SQL] SQL을 사용하여 여러 분야에서 서로 다른 선택 (0) | 2020.05.24 |
[SQL] MySQL은 - 어떻게 다음 행에서 이전 행과 가치의 가치를 얻을? [복제] (0) | 2020.05.24 |