创建数据库 SQLiteOpenHelper

day_moon 2015-11-01 11:42:14
运行结果:

public class StudentHelper extends SQLiteOpenHelper{

//在SQLiteOepnHelper的子类当中,必须有该构造函数
public StudentHelper(Context context) {
//必须通过super调用父类当中的构造函数
super(context,"student.db", null, 1);
}

//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
public void onCreate(SQLiteDatabase db) {
//execSQL函数用于执行SQL语句
db.execSQL("create table student(id integer primary key autoincrement,name varchar(50),pwd varchar(50)");
System.out.println("create a Database");
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("update a Database");

}

}


另外一个类
public class MainActivity extends Activity {
StudentHelper studentHelper;
public MainActivity(Context mContext){
studentHelper=new StudentHelper(mContext);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addStudent();
}

//添加一个学生
public void addStudent(){
//SQLiteDatabase对数据库进行操作的一个类
SQLiteDatabase db=null;
/*只有调用了StudentHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,
才会创建,或打开一个数据库*/
db=studentHelper.getWritableDatabase();

//ContentValues 存储基本类型的数据
ContentValues m=new ContentValues();
m.put("id", 1);
m.put("name", "gu");
m.put("pwd", "123");

db.insert("student", null, m);

}

}

1、我想添加一个学生放在学生表里面,运行出错。不知道错在哪里?
...全文
157 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
day_moon 2015-11-01
  • 打赏
  • 举报
回复
嗯,按你说的是可以运行没错。可是我想知道为什么会这样。我就再MainActivity类添加这一段代码: public class MainActivity extends Activity { public MainActivity(){ } } 也是不得。不是说MainActivity没有空的构造器,我手动添加一个构造器,为什么就不得了?
阿飞__ 2015-11-01
  • 打赏
  • 举报
回复
不会看错误的解释么,说MainActivity没有空的构造器,无法实例化这个类 你把 public MainActivity(Context mContext){ studentHelper=new StudentHelper(mContext); } 这段代码去掉,随便在onCreate等等其它地方初始化studentHelper

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧