当前位置:编程学习 > wap >>

求助,有关SQLite数据库,急啊

小弟新手,求大家帮忙看看

点击按钮后,可以将数据存到表里,然后在listview中显示出来
可是我点了没用啊,更郁闷的是一开始可以的,现在没法用
到底出了什么情况,求帮助

public class MyDatabaseHelper extends SQLiteOpenHelper{

 final String CREAT_TABLE_SQL =
 "CREATE TABLE dict (_id integer primary key, month integer, day integer, data varchar)";
 public MyDatabaseHelper(Context context, String name, int version) {
  super(context, name, null, version);
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
  // TODO Auto-generated method stub
  System.out.println("create a database");
  //execSQL用于执行SQL语句
  db.execSQL(CREAT_TABLE_SQL);
 }
 
 @Override
 public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
  // TODO Auto-generated method stub
  System.out.println("upgrade a database");
 }
}


public class MainActivity extends Activity {

final MyDatabaseHelper dbhelper = new MyDatabaseHelper(this ,"my.db3",1);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button insert = (Button)findViewById(R.id.insert);
show();

insert.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String month1 =                ((EditText)findViewById(R.id.emonth)).getText().toString();
int month2 = Integer.parseInt(month1);
String day1 = ((EditText)findViewById(R.id.eday)).getText().toString();
int day2 = Integer.parseInt(day1);
String data = ((EditText)findViewById(R.id.edata)).getText().toString();
SQLiteDatabase db=dbhelper.getReadableDatabase();
String insert_sql="INSERT into dict(month, day, data) values ('"+month2+"','"+day2+"','"+data+"')";
                db.execSQL(insert_sql);
                show();
}      
});

}

protected void show()
{
SQLiteDatabase db=dbhelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * from dict", null);
        ListView lv = (ListView)findViewById(R.id.show);
        SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(
MainActivity.this,R.layout.line,cursor,
new String[]{"month","day","data"},
new int[]{R.id.textView1,R.id.textView2,R.id.textView3});
        lv.setAdapter(listAdapter);
        cursor.close();
}


@Override
protected void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
if (dbhelper != null)
{
dbhelper.close();
}
}


--------------------编程问答-------------------- 自己顶下
顺便说下导出了数据库my.db3,用sqlite3查了下表有了数据也有了select语句也没问题 --------------------编程问答-------------------- 在show()方法里面加一句listAdapter.notifyDatasetChange()试试。
感觉是因为你onCreate里面已经show()了一次,绑定了一个无数据的空表,点击按钮的时候又调用show()方法又重新绑定了一次,但是并没有手动刷新。因此其实数据库里面有数据,但是界面没有刷新显示效果。
把绑定adapter单独拿出来吧,SimpleCursorAdapter只需要绑定一次就够了,以后直接调用notifyChange或者notifyDatasetChange就可以刷新界面了,只要Cursor不close的情况下。 --------------------编程问答-------------------- 看了一遍程序貌似没有问题.
你试试这样  手机或者 模拟器 程序管理里 清除一下 应用的缓存

补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,