Android sqlite数据库演示

时间:2013-11-26 05:34:12

标签: android android-sqlite

这是我的主要活动:

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();
}

}

当我在模拟器中运行此程序时,在按钮上单击它显示“不幸停止工作”而不是“数据已成功保存”

1 个答案:

答案 0 :(得分:1)

您忘记在按钮点击上调用sqlite方法之前初始化Mysql类的addrecord对象,所以请执行以下操作:

        sqlite=Mysql(MainActivity.this);
        sqlite.addrecord(paramname, paramcourse);