在使用simpleCursorAdapter显示sqlite数据时,必须注意sqlite的主键命名。由于simpleCursorAdapter的方法只识别_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现 java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误。
下面是ActivityMain类 供大家参考 一下。
public class ActivityMain extends Activity {
private static int count =0;
//创建数据库对象
private SQLiteDatabase mSqliteDatabase=null;
//数据库名
private static final String DATABASE_NAME="gege.db";
//表名
private static final String TABLE_NAME="jiao";
//表中字段
private static final String TABLE_ID="_id";
private static final String TABLE_NUM="num";
private static final String TABLE_DATA="data";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
//创建linearLayout布局对象
m_LinearLayout=new LinearLayout(this);
//设置布局LinearLayout的属性
m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);
//创建ListView对象
m_ListView = new ListView(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
//listView的背景颜色
m_ListView.setBackgroundColor(Color.BLACK);
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode){
case KeyEvent.KEYCODE_DPAD_LEFT:
AddData();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
DeleteData();
break;
case KeyEvent.KEYCODE_1:
upData();
break;
case KeyEvent.KEYCODE_2:
DeleteTable();
break;
case KeyEvent.KEYCODE_3:
DeleteDataBase();
break;
}
return true;
}
/*
* 删除数据库
*
*/
public void DeleteDataBase(){
this.deleteDatabase(DATABASE_NAME);
this.finish();
}
/*
* 删除一个表
*/
public void DeleteTable(){
mSqliteDatabase.execSQL("drop table"+TABLE_NAME);
this.finish();
}
/*
* 更新一条数据
*
*/
public void upData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, count);
cv.put(TABLE_DATA, "修改后的数据"+count);