打开虚拟机的数据库
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>>>>>>>"); } }