问题描述
林有一些麻烦试图获取信息存储在我的数据库,并将其显示在ListView。
Im having some troubles trying to get the info stored in my database and showing it in a ListView.
这就是我想要显示的行ListActivity:
This is the ListActivity where i want to show the rows:
public class Prueba extends ListActivity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.i_prueba);
DataBaseAccess db = new DataBaseAccess(this);
db.open();
Cursor result = db.getAllContact();
startManagingCursor(result);
// the desired columns to be bound
String[] columns = new String[] {"_id", "nombre", "telefono", "mail"};
// the XML defined views which the data will be bound to
int[] to = new int[] { R.id.textid, R.id.textNombre, R.id.textTelefono, R.id.textMail };
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.i_listadb, result, columns, to);
this.setListAdapter(mAdapter);
}
DB类。下面是该方法getAllContact在那里我得到的错误:
The DB class. Here is the method getAllContact where i get the error:
公共类DataBaseAccess {
public class DataBaseAccess {
public static final String NOMBRE = "nombre";
public static final String TELEFONO = "telefono";
public static final String MAIL = "mail";
public static final String ID = "_id";
public DataBaseAccess(Context context) {
this.androidContext = context;
//DataBaseHelper is another class where the Database is created. In the "onCreate" //method of that class is where i make the CREATE TABLE and add some values to that //table.
dbHelper = new DataBaseHelper(androidContext);
}
public void open() throws SQLException {
db = dbHelper.getWritableDatabase();
}
[...MORE METHODS...]
public Cursor getAllContact(){
String[] columnas = new String[] {ID, NOMBRE, TELEFONO, MAIL};
Cursor mCursor = dbHelper.query("t_contactos", columnas, null, null, null, null, null);
if (mCursor != null){
mCursor.moveToFirst();
}
return mCursor;
}
}
和这里距离LogCat中的错误信息:
And here is the error messages from the LogCat:
E/AndroidRuntime( 636): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pfc.android/com.pfc.android.Prueba}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, nombre, telefono, mail FROM t_contactos
E/AndroidRuntime( 636): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
E/AndroidRuntime( 636): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
E/AndroidRuntime( 636): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
E/AndroidRuntime( 636): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
E/AndroidRuntime( 636): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 636): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 636): at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime( 636): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 636): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 636): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime( 636): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime( 636): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 636): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, nombre, telefono, mail FROM t_contactos
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1006)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:964)
E/AndroidRuntime( 636): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1041)
E/AndroidRuntime( 636): at com.pfc.android.DataBaseAccess.getAllContact(DataBaseAccess.java:97)
E/AndroidRuntime( 636): at com.pfc.android.Prueba.onCreate(Prueba.java:21)
E/AndroidRuntime( 636): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
E/AndroidRuntime( 636): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
E/AndroidRuntime( 636): ... 11 more
所以,任何人可以帮助打通吗?预先感谢您!
So, can anybody help to get through this?Thank you in advance !
推荐答案
您可能没有在数据库表中的列_id。拉和所有的SqliteViewer打开它来检查,如果它确实存在。该数据库通常是在/data/data/com.yourapp.package/databases /
You probably don't have a column _id in your database table. Pull the database and open it with SqliteViewer to check if it actually exists. The database is usually under /data/data/com.yourapp.package/databases/
您可以使用: http://sqlitebrowser.sourceforge.net/ 要么 http://www.navicat.com/en/products/navicat_sqlite/sqlite_overview.html (他们也有一个免费的精简版版本)
You can use:http://sqlitebrowser.sourceforge.net/orhttp://www.navicat.com/en/products/navicat_sqlite/sqlite_overview.html (they also have a free lite version)
这篇关于Android系统。 SQLite的例外:没有这样的列_id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!