这是我的主要活动:
public class MainActivity extends Activity {
EditText edittext_name, edittext_course;
Button addtodatabase;
String paramname,paramcourse;
Mysql sqlite;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edittext_name = (EditText) findViewById(R.id.editText1);
edittext_course = (EditText) findViewById(R.id.editText2);
addtodatabase=(Button) findViewById(R.id.button1);
addtodatabase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
paramname=edittext_name.getText().toString();
paramcourse=edittext_course.getText().toString();
sqlite.addrecord(paramname, paramcourse);
Toast.makeText(getApplicationContext(), "data saved succesfully", Toast.LENGTH_SHORT).show();
edittext_name.setText("");
edittext_course.setText("");
}
});
}
这是我的SQLiteOpenHelper扩展类,即Mysql:
public class Mysql extends SQLiteOpenHelper {
private static int DATABASE_VERSION = 1;
private static String DATABASE_NAME = "demotable";
public Mysql(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase sqdb) {
// TODO Auto-generated method stub
String Query = "CREATE TABLE demotable(namecloumn Text,coursecloumn Text)";
sqdb.execSQL(Query);
}
@Override
public void onUpgrade(SQLiteDatabase sqdb, int arg1, int arg2) {
// TODO Auto-generated method stub
sqdb.execSQL("DROP TABLE IF EXISTS demotable");
onCreate(sqdb);
}
public void addrecord(String name, String course) {
SQLiteDatabase sqlite = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("namecloumn", name);
cv.put("coursecloumn", course);
sqlite.insert("demotable", null, cv);
sqlite.close();
}
}
当我在模拟器中运行此程序时,在按钮上单击它显示“不幸停止工作”而不是“数据已成功保存”
答案 0 :(得分:1)
您忘记在按钮点击上调用sqlite
方法之前初始化Mysql
类的addrecord
对象,所以请执行以下操作:
sqlite=Mysql(MainActivity.this);
sqlite.addrecord(paramname, paramcourse);