2016-03-22 16 views
0

boş.Android SQLite dizisi Bir sorum var

Ancak, dizi boş, neden?

DatabaseAccess.java

public class DatabaseAccess { 
private SQLiteOpenHelper openHelper; 
private SQLiteDatabase database; 
private static DatabaseAccess instance; 

/** 
* Private constructor to aboid object creation from outside classes. 
* 
* @param context 
*/ 
public DatabaseAccess(Context context) { 
    this.openHelper = new DatabaseOpenHelper(context); 
} 

/** 
* Return a singleton instance of DatabaseAccess. 
* 
* @param context the Context 
* @return the instance of DabaseAccess 
*/ 
public static DatabaseAccess getInstance(DatabaseGrabber context) { 
    if (instance == null) { 
     instance = new DatabaseAccess(context); 
    } 
    return instance; 
} 

/** 
* Open the database connection. 
*/ 
public void open() { 
    this.database = openHelper.getWritableDatabase(); 
} 

/** 
* Close the database connection. 
*/ 
public void close() { 
    if (database != null) { 
     this.database.close(); 
    } 
} 

/** 
* Read all quotes from the database. 
* 
* @return a List of quotes 
*/ 
public List<String> getQuotes() { 
    String WhiteFarm = "SKM"; 
    List<String> list = new ArrayList<>(); 
    Cursor cursor = database.rawQuery("SELECT * FROM WhereToEat WHERE 'LocationCode' = " + "'" + WhiteFarm + "'", null); 
    cursor.moveToFirst(); 
    if (cursor.moveToFirst()) { 
     do { 
      // do what you need with the cursor here 
      list.add(cursor.getString(0)); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close(); 
    return list; 
} 
} 

DatabaseGrabber.java

public class DatabaseGrabber extends ActionBarActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.selection_main); 

    final TextView Shop_name = (TextView)findViewById(R.id.ShopName); 

    DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this); 
    databaseAccess.open(); 
    final List<String> ShopName = databaseAccess.getQuotes(); 
    databaseAccess.close(); 

    Button StartDraw = (Button)findViewById(R.id.draw_start); 
    StartDraw.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (ShopName.size()>0) { 
       Collections.shuffle(ShopName); 
       String random = ShopName.get(0); 
       Shop_name.setText(random); 
      } 
      else{ 
       Shop_name.setText("Nothing here!"); 
      } 
     } 
    }); 
} 
} 

DatabaseOpenHelper.java

public class DatabaseOpenHelper extends SQLiteAssetHelper { 
private static final String DATABASE_NAME = "WhereToEat"; 
private static final int DATABASE_VERSION = 1; 

public DatabaseOpenHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 
} 

Ve bu

BEGIN TRANSACTION; 
CREATE TABLE "WhereToEat" (
`ShopName` TEXT, 
`Location` TEXT, 
`LocationCode` TEXT, 
`Photo` BLOB 
); 
INSERT INTO `WhereToEat` VALUES ('KFC','Shek Kip Mei','WhiteFarm',NULL); 
INSERT INTO `WhereToEat` VALUES ('McDonalds','Lai Chi Kok','SKM',NULL); 
INSERT INTO `WhereToEat` VALUES ('SomethingBig','Nam Cheong','SKM',NULL); 
INSERT INTO `WhereToEat` VALUES ('Subway','Tsuen Wan','SKM',NULL); 
COMMIT; 

teşekkür ederiz sql dosyasıdır.

+0

çek tablo böyle koşulu ile bazı satırları varsa: Eğer Bunu yaparken

, dize değeri için bir yer tutucu (?) kullanarak kodunu temizlemek? – ELITE

+0

Değerleri geri aldığınızdan emin misiniz? Kullanılması gerektiği anlamına gelen "rawQuery" yi kullanmanızı öneririm, alıntılarla çok daha az sorunla karşılaşırsınız. Ayrıca tüm kayıtları seçtiğini, ancak sadece bir ilkini aldığının farkında mısın? – Pztar

cevap

1

WHERE yan tümcesinde sütun adının etrafında tırnak işaretleri var. Her potansiyel sonuç satırı için, her zaman yanlış olan 'LocationCode' = 'SKM' olup olmadığını kontrol ediyorsunuz.

Sütun adındaki tırnak işaretlerini kaldırın ve iyi olacağını umuyorum.

Cursor cursor = database.rawQuery(
     "SELECT * FROM WhereToEat WHERE LocationCode = ?", 
     new String[]{WhiteFarm}); 
+0

sütun adı etrafında tırnak işaretleri kaldırdığınızda, hata günlüğü böyle bir sütun olmadığını söyledi –

+0

Anlayabildiğim kadarıyla, çalışması gerekir. Sütunun var olduğundan ve doğru şekilde yazdığınızdan emin misiniz? –