打開虛擬機的數據庫
1.xml文件
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="OnCreat" android:text="@string/creat" /> <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/insertdata" /> <Button android:id="@+id/btn_updata" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/updata" /> <Button android:id="@+id/btn_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/delete" /> <Button android:id="@+id/btn_insertApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="@string/apiinsert" /> <Button android:id="@+id/btn_updataApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="Api修改數據" /> <Button android:id="@+id/btn_deleteApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="Api刪除數據" /> </LinearLayout>
2,主Activity
public class MainActivity extends AppCompatActivity { private MySqliteHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = DbManager.getIntance(this); //獲取了數據庫幫助類的對象 } //點擊創建按鈕,創建數據庫 public void OnCreat(View view){ /** * getReadableDatabase * getWritableDatabase * 創建或打開數據庫 * 如果使用時沒有發現數據庫就創建數據庫,如果發現則打開數據庫 * 默認情況下兩個都表示創建或打開可讀可寫的數據庫對象 * 如果出現磁盤已滿或數據庫權限的情況下getReadableDatabase打開的是隻讀數據庫 * */ SQLiteDatabase db = helper.getWritableDatabase(); } public void click(View view){ switch (view.getId()){ case R.id.btn_insert: SQLiteDatabase db =helper.getWritableDatabase(); String sql = "insert into "+ Constant.TABLENAME+" values(1,'zhangshan',20)"; //雙引號裏面不能再用雙引號,要用單引號 DbManager.execSQL(db,sql); String sql2 = "insert into "+ Constant.TABLENAME+" values(2,'lisi',20)"; DbManager.execSQL(db,sql2); db.close(); //防止數據庫使用資源的佔用 break; case R.id.btn_updata: db = helper.getWritableDatabase(); String sql3 = "updata person set name = 'xiaoming' where _id=1"; DbManager.execSQL(db,sql3); db.close(); break; case R.id.btn_delete: db = helper.getWritableDatabase(); String deletedatabase = "delete from person where _id=1"; DbManager.execSQL(db,deletedatabase); db.close(); break; } } public void onClick(View view){ switch (view.getId()){ case R.id.btn_insertApi: SQLiteDatabase db = helper.getWritableDatabase(); /** * table 插入數據庫的名稱 * String nullColumnHack SQLite規定不能插入全是空的一條數據 * ContentValues values 鍵爲String類型的hashmap集合 * 返回值long 表示插入數據的列數 */ ContentValues values =new ContentValues(); values.put(Constant._ID,3); values.put(Constant.NAME,"xiaoming"); values.put(Constant.AGE,12); long result =db.insert(Constant.TABLENAME,null,values); if (result>0){ Toast.makeText(MainActivity.this,"插入數據成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"插入數據失敗",Toast.LENGTH_SHORT); } db.close(); break; case R.id.btn_updataApi: db=helper.getWritableDatabase(); /** * ContentValues values 鍵爲String類型的hashmap集合 * String whereClause 修改的條件 * String[] whereArgs 修改條件的佔位符 */ ContentValues cv = new ContentValues(); cv.put(Constant.NAME,"sl");//put(需要修改的字段名稱,修改後的字段值) int count = db.update(Constant.TABLENAME, cv,"_id=3",null); // int count = db.update(Constant.TABLENAME, cv,"_id=?",new String[]{"3"}); 與上面的效果完全一樣 if (count>0){ Toast.makeText(MainActivity.this,"修改數據成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"修改數據失敗",Toast.LENGTH_SHORT); } db.close(); break; case R.id.btn_deleteApi: db = helper.getWritableDatabase(); /** * String table, String whereClause, String[] whereArgs */ int deleteresult=db.delete(Constant.TABLENAME,"_id=3",null); if (deleteresult>0){ Toast.makeText(MainActivity.this,"刪除數據成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"刪除數據失敗",Toast.LENGTH_SHORT); } db.close(); } }3,實例化一些常數
public class Constant { public static final String DATABASENAME="info.db"; //數據庫名稱 public static final int DATABASE_VERSION = 1; //數據庫版本號 public static final String TABLENAME = "person"; //表名 public static final String NAME = "name"; public static final String AGE = "age"; public static final String _ID = "_id"; }4,對數據庫操作的常用類
/** * 對數據庫操作的工具類 * Created by sky on 2017/1/5. */ public class DbManager { private static MySqliteHelper helper; //構建一個幫助類的對象 //相應類的獲取方式 //開發模式中的單例模式 public static MySqliteHelper getIntance(Context context) { if (helper == null){ helper =new MySqliteHelper(context); } return helper; } /** * 根據SQL語句在數據庫中執行語句 * 可以執行除查詢外的所有語句 * @param db 數據庫對象 * @param sql SQL語句 */ public static void execSQL(SQLiteDatabase db,String sql){ if (db !=null){ if (sql!=null && !"".equals(sql)){ db.execSQL(sql); } } } }5,打開或創建數據庫的類
/** * Created by sky on 2017/1/5. * sqliteopenhelper * 1。提供了Onceat,Onupgrade()等創建數據庫更新數據庫的方法 * 2.提供了獲取數據庫對象的函數 */ public class MySqliteHelper extends SQLiteOpenHelper { /** * 構造函數 * @param context * @param name 表示創建數據庫的名稱 * @param factory 遊標工廠 * @param version 當前數據庫的版本 >=1 */ public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public MySqliteHelper (Context context){ super(context,Constant.DATABASENAME,null,Constant.DATABASE_VERSION); } /** * * 當數據庫創建時回d調的函數 * @param db 數據庫對象 */ @Override public void onCreate(SQLiteDatabase db) { /** * 創建表的語句 */ //String sql = "creat table person(_id Integer primary key ,name varchar(10),age Integer)"; String sql = "creat table"+Constant.TABLENAME+"("+Constant._ID+"Integer primary key," +Constant.NAME+"varchar(10),"+Constant.AGE +" Integer)"; /** * 執行SQ語句 */ db.execSQL(sql); Log.i("tag","<<<<<<<<OnCreat>>>>>>>"); } /** * 當數據庫有版本更新時回調的函數 * @param db * @param oldVersion 數據庫舊版本 * @param newVersion 數據庫新版本 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } /** * 當數據庫打開時回調的函數 * @param db */ @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); Log.i("tag","<<<<<<<<OnOpen>>>>>>>"); } }