SORU
29 Temmuz 2010, PERŞEMBE


Sütun '_ıd' yok Android?

Not Defteri örnekte böyle bir sorun yaşıyorum. İşte Notepadv1Solution/NotepadCodeLab: kodu

String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };

SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
R.layout.notes_row, c, from, to);

Bu kod gayet iyi çalışıyor görünüyor. Ama açık olalım, ADBkoştum programı çalıştırmak ve SQLite 3. Aşağıdaki gibi şema inceledim

CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE notes (_id integer primary key autoincrement, title text
not null, body text not null);

Hepsi bana iyi görünüyor.


Şimdi benim uygulama için, görebildiğim kadarıyla, temelde aynı. birkaç küçük değişiklik. Basitleştirilmiş ve benim kod basitleştirilmiş ettik, ama sorun devam ederse.

String[] from = new String[] { "x" };
int[] to = new int[] { R.id.x };

SimpleCursorAdapter adapter = null;
try
{
    adapter = new SimpleCursorAdapter(this, R.layout.circle_row, cursor, from, to);
}
catch (RuntimeException e)
{
    Log.e("Circle", e.toString(), e);
}

Benim uygulama çalıştırdığınızda, bir RuntimeException ve aşağıdaki baskılar alıyorum Log.e() benim deyimi: LogCat

Mesaj LogCat:

java.lang.Sınıftır: sütun '' yok . _ıd

Yani, benim şeması hakkında farklı ne görmek SQLite 3 için:

Eksik olduğumu anlamıyorum '_ıd'.

Ben yanlış ne yaptım?

Benim uygulama ve Not Defteri örnek arasında farklı olan bir şey. sıfırdan benim uygulama kullanarak oluşturmaya başladım Örnek uygulama bir araya gelir zaten süre tutulması Sihirbazı. . orada yeni bir uygulama için yapmak istiyorum çevresel değişim bir çeşit SQLite veritabanı kullanmak?

CEVAP
21 EYLÜL 2011, ÇARŞAMBA


Bu answered ve daha kapsamlı burada yapmak istiyorum.

İmleç sonuç kümesi sütun tam adı eklemek gerekir SimpleCursorAdapter"". _ıd Eğer "_ıd" tablonuzdaki sütun.tanımlamak sormaman değil şema değiştirmek için acele etmeyin SQLite otomatik olarak gizli bir sütun "" her tablo için. rowıd adlı ekledi Tüm yapmanız gereken sadece seçmek ve açıkça rowıd olarak takma adı '_ıd' Eski.

SQLiteDatabase db = mHelper.getReadableDatabase();      
Cursor cur =  db.rawQuery( "select rowid _id,* from your_table", null);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kontor.TV

    Kontor.TV

    14 Mart 2006
  • Make:

    Make:

    23 Mart 2006
  • TouchePro

    TouchePro

    27 EYLÜL 2007