一个Android数据存储的例子,一直有问题,求大神指点
每次运行的时候,都会出错退出,不知道问题在哪里,我把代码贴出来了,希望指点一下!
package com.sql;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
public class SqlActivity extends Activity {
OpenHelper myHelper;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv);
//创建MySQLiteOpenHelper辅助类对象
myHelper = new OpenHelper(null);
//向数据库中插入和更新数据
insertAndUpdateData(myHelper);
//查询数据
String result = queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字\t等级\n"+result);
}
//向数据库中插入和更新数据
public void insertAndUpdateData(OpenHelper myHelper){
//SQLiteDatabase db = myHelper.getWritableDatabase();
Operating operating=new Operating(this);
account acc=new account("wh", 20, 200);
operating.Add(acc);
db.close();*/
}
//从数据库中查询数据
public String queryData(OpenHelper myHelper){
String result = "";
//获得数据库对象
SQLiteDatabase db = myHelper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
}
@Override
protected void onDestroy() {
SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
//删除hero_info表中所有的数据 传入1 表示删除所有行
db.delete("hero_info", "1", null);
super.onDestroy();
}
}
package com.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, "account.db", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
数据库的操作类
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.location.Address;
public class Operating {
private OpenHelper helper;
private SQLiteDatabase db;
public Operating(Context context)
{
helper = new OpenHelper(context);
}
public void Add(account acc)
{
db.execSQL("insert into t_student (sid,name,age) values (?,?,?)", new Object[]
{ acc.id,acc.name,acc.level });
}
}
package com.sql;
import android.R.integer;
import android.R.string;
public class account {
public int id;
public String name;
public int level;
public account() {
}
public account (String name, int id, int level) {
this.name = name;
this.id = id;
this.level = level;
}
}