package?helloworld.dongnaoedu.com.imoocsqlitedemo;
import?android.database.Cursor;
import?android.database.sqlite.SQLiteDatabase;
import?android.database.sqlite.SQLiteOpenHelper;
import?android.os.Environment;
import?android.support.annotation.IdRes;
import?android.support.v7.app.AppCompatActivity;
import?android.os.Bundle;
import?android.util.Log;
import?android.view.View;
import?android.widget.EditText;
import?android.widget.ListView;
import?android.widget.RadioGroup;
import?android.widget.SimpleCursorAdapter;
import?android.widget.Toast;
public?class?MainActivity?extends?AppCompatActivity?{
????private?EditText?nameEdt,ageEdt,idEdt;
????private?RadioGroup?genderGp;
????private?String?genderStr?=?"男";
????private?SQLiteDatabase?db;
????private?ListView?stuList;
????@Override
????protected?void?onCreate(Bundle?savedInstanceState)?{
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.activity_main);
????????//添加操作
????????//參數(shù):環(huán)境上下文;數(shù)據(jù)庫名稱(如果只有一個數(shù)據(jù)庫名稱,那么這個數(shù)據(jù)庫的位置會是在私有目錄data中);
????????//?游標(biāo)工廠,通過什么游標(biāo)去操作數(shù)據(jù),傳null給我一個默認選擇;版本號
????????//如果帶SD卡路徑,那么數(shù)據(jù)庫位置則在指定的路徑下
????????//~
????????String?path?=?Environment.getExternalStorageDirectory()?+?"/stu.db";
????????SQLiteOpenHelper?helper?=?new?SQLiteOpenHelper(this,path,null,1)?{
????????????@Override
????????????public?void?onCreate(SQLiteDatabase?db)?{
????????????????//創(chuàng)建
????????????????Toast.makeText(MainActivity.this,"數(shù)據(jù)庫創(chuàng)建",Toast.LENGTH_SHORT).show();
????????????????//如果數(shù)據(jù)庫不存在,則會調(diào)用onCreate方法,那么我們可以將表的創(chuàng)建工作放在這里完成
????????????????String?sql?=?"create?table?info_db?(_id?integer?primary?key?autoincrement,"?+
????????????????????????"name?varchar(20),"?+
????????????????????????"age?integer,"?+
????????????????????????"gender?varhcar(4))";
????????????????db.execSQL(sql);
????????????}
????????????@Override
????????????public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{
????????????????//升級
????????????????Toast.makeText(MainActivity.this,"數(shù)據(jù)庫升級",Toast.LENGTH_SHORT).show();
????????????}
????????};
????????//1、數(shù)據(jù)庫存在則直接打開數(shù)據(jù)庫;(所謂的打開指的是獲得數(shù)據(jù)庫對象)
????????//2、數(shù)據(jù)庫不存在則創(chuàng)建再打開,
????????//3、數(shù)據(jù)庫存在但版本號升高,則調(diào)用升級方法。
????????db?=?helper.getReadableDatabase();//用于獲取數(shù)據(jù)庫對象
????????nameEdt?=?(EditText)?findViewById(R.id.name_edt);
????????ageEdt?=?(EditText)?findViewById(R.id.age_edt);
????????idEdt?=?(EditText)?findViewById(R.id.id_edt);
????????genderGp?=?(RadioGroup)?findViewById(R.id.gender_gp);
????????genderGp.setOnCheckedChangeListener(new?RadioGroup.OnCheckedChangeListener()?{
????????????@Override
????????????public?void?onCheckedChanged(RadioGroup?group,?@IdRes?int?checkedId)?{
????????????????if(checkedId?==?R.id.male)?{genderStr?=?"男";}
????????????????else{?genderStr?=?"女";}
????????????}
????????});
????????stuList?=?(ListView)?findViewById(R.id.stu_list);
????}
????public?void?operate(View?v){
????????String?nameStr?=?nameEdt.getText().toString();
????????String?ageStr?=?ageEdt.getText().toString();
????????String?idStr?=?idEdt.getText().toString();
????????switch?(v.getId()){
????????????case?R.id.insert_btn:
????????????????//db.rawQuery();??查詢?select?*?from?表名
????????????????//db.execSQL();???添加,刪除,修改,查找
????????????????//String?sql?=?"insert?into?info_db(name,age,gender)?values('張',12,'男')";
????????????????String?sql?=?"insert?into?info_db?(name,age,gender)?values(?,?,?)";
????????????????db.execSQL(sql,new?String[]{nameStr,ageStr,genderStr});
????????????????break;
????????????case?R.id.select_btn:
//????????????????db.rawQuery(sql)
????????????????//select?*?from?表名?where?_id?=??
????????????????String?sql2?=?"select?*?from?info_db";
????????????????if(!idStr.equals("")){
????????????????????sql2?+=?"?where?_id="?+?idStr;
????????????????}
????????????????//查詢結(jié)果
????????????????Cursor?c?=?db.rawQuery(sql2,null);
????????????????//SimpleCursorAdapter
????????????????//SimpleAdapter?a?=?new?SimpleAdapter
????????????????//參數(shù)3:數(shù)據(jù)源;4、表頭,即鍵值對;5、要填充的位置;6、通知將變化的數(shù)據(jù)反映到頁面上
????????????????//數(shù)據(jù)源要有下劃線
????????????????SimpleCursorAdapter?adapter?=?new?SimpleCursorAdapter(this,R.layout.item,
????????????????????????c,new?String[]{"_id","name","age","gender"},
????????????????????????new?int[]{R.id.id_item,R.id.name_item,R.id.age_item,R.id.gender_item});
????????????????stuList.setAdapter(adapter);
????????????????break;
????????????case?R.id.delete_btn:
????????????????Log.d("MainActivity",?"刪除?");
????????????????String?sql3?=?"delete?from?info_tb?where?_id="+idStr+"";
????????????????db.execSQL(sql3);
????????????????break;
????????????case?R.id.update_btn:
????????????????Log.d("MainActivity",?"更新?");
????????????????String?sql4?=?"update?info_tb?set?name=?,age=?,gender=??where?_id=?";
????????????????db.execSQL(sql4,new?String[]{nameStr,ageStr,genderStr,idStr});
????????????????break;
????????}
????}
}
1 回答

曾經(jīng)的曾經(jīng)去哪了
TA貢獻8條經(jīng)驗 獲得超15個贊
刪除語句改為:String?sql3?=?"delete?from?info_tb?where?_id="'+idStr+'";
- 1 回答
- 0 關(guān)注
- 1028 瀏覽
添加回答
舉報
0/150
提交
取消