标签:教程 cto open img hid util ted tac 磁盘
注:慕课网详细教程:http://www.imooc.com/learn/748
一、准备工作:http://www.cnblogs.com/bky1225987336/p/6612011.html
二、工程结构
三、实现代码
1.创建存放数据库字段的常量类
package com.example.sqlitedemo.utils; /** * Created by 袁磊 on 2017/3/24. */ public class Constant { public static final String DATABASE_NAME = "info.db";//数据库名称 public static final int DATABASE_VERSION = 1;//数据库的版本号 public static final String TABLE_NAME = "person";//表名 public static final String _ID = "_id"; public static final String NAME = "name"; public static final String AGE = "age"; }
2.自定义数据库辅助类
package com.example.sqlitedemo.utils; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * 1.提供了onCreate() onUpgrade()等创建数据库更新数据库的方法 * 2.提供了获取数据库对象的函数 * Created by 袁磊 on 2017/3/24. */ 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.DATABASE_NAME, null, Constant.DATABASE_VERSION); } /** * 当数据库创建时回调的函数 * * @param db 数据库对象 */ @Override public void onCreate(SQLiteDatabase db) { Log.d("TAG", "----------onCreate-----------"); //创建表 String sql = "create table " + Constant.TABLE_NAME + "(" + Constant._ID + " Integer primary key," + Constant.NAME + " varchar(10)," + Constant.AGE + " Integer)"; db.execSQL(sql);//执行sql语句 } /** * 当数据库版本更新时回调的函数 * * @param db 数据库对象 * @param oldVersion 数据库旧版本 * @param newVersion 数据库新版本 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.d("TAG", "----------onUpgrade-----------"); } /** * 当数据库打开时回调的函数 * * @param db 数据库对象 */ @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); Log.d("TAG", "----------onOpen-----------"); } }
3.操作数据库,执行SQL语句的工具类
package com.example.sqlitedemo.utils; import android.content.Context; import android.database.sqlite.SQLiteDatabase; /** * 主要是对数据库操作的工具类 * Created by 袁磊 on 2017/3/24. */ public class DBManager { /** * 采用单例模式 */ private static MySQLiteHelper helper; public static MySQLiteHelper getInstance(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); } } } }
4.界面操作,SQL语句代码
package com.example.sqlitedemo; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.example.sqlitedemo.utils.Constant; import com.example.sqlitedemo.utils.DBManager; import com.example.sqlitedemo.utils.MySQLiteHelper; public class MainActivity extends AppCompatActivity { private Button btnCreate; private Button btnInsert; private Button btnUpdate; private Button btnDelete; private Button btnInsertApi; private Button btnUpdateApi; private Button btnDeleteApi; private MySQLiteHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); initData(); } private void initView() { btnCreate = (Button) findViewById(R.id.btn_create); btnInsert = (Button) findViewById(R.id.btn_insert); btnUpdate = (Button) findViewById(R.id.btn_update); btnDelete = (Button) findViewById(R.id.btn_delete); btnInsertApi = (Button) findViewById(R.id.btn_insertApi); btnUpdateApi = (Button) findViewById(R.id.btn_updateApi); btnDeleteApi = (Button) findViewById(R.id.btn_deleteApi); } private void initListener() { // 点击按钮创建数据库 btnCreate.setOnClickListener(myOnClickListener); btnInsert.setOnClickListener(myOnClickListener); btnUpdate.setOnClickListener(myOnClickListener); btnDelete.setOnClickListener(myOnClickListener); btnInsertApi.setOnClickListener(myOnClickListener); btnUpdateApi.setOnClickListener(myOnClickListener); btnDeleteApi.setOnClickListener(myOnClickListener); } private void initData() { helper = DBManager.getInstance(this); } private View.OnClickListener myOnClickListener = new View.OnClickListener() { @Override public void onClick(View v) { /** * getReadableDatabase(),getWritableDatabase()创建或者打开数据库 * 如果数据库不存在则创建数据库,如果数据库存在则打开数据库 * 默认情况下两个函数都表示打开或者创建可读可写的数据库对象, * 如果磁盘已满或者是数据库本身权限等的情况下 * getReadableDatabase()打开的是只读数据库 */ SQLiteDatabase db = helper.getWritableDatabase(); switch (v.getId()) { case R.id.btn_create: break; case R.id.btn_insert: String sql = "insert into " + Constant.TABLE_NAME + " values(1,‘zhangsan‘,20)"; DBManager.execSQL(db, sql); String sql2 = "insert into " + Constant.TABLE_NAME + " values(2,‘lisi‘,23)"; DBManager.execSQL(db, sql2); break; case R.id.btn_update: String updateSql = "update " + Constant.TABLE_NAME + " set " + Constant.NAME + "=‘xiaoming‘ where " + Constant._ID + "=1"; DBManager.execSQL(db, updateSql); break; case R.id.btn_delete: String delSql = "delete from " + Constant.TABLE_NAME + " where " + Constant._ID + "=2"; DBManager.execSQL(db, delSql); break; case R.id.btn_insertApi: /** * insert(String table, String nullColumnHack, ContentValues values) * String table 表示插入数据表的名称 * String nullColumnHack * ContentValues values 键为String类型的hashMap集合 * 返回值 long 表示插入数据的列数 */ ContentValues values = new ContentValues(); values.put(Constant._ID, 3);//put(插入数据库的字段名称,插入该字段的具体值) values.put(Constant.NAME, "张三"); values.put(Constant.AGE, 30); long result = db.insert(Constant.TABLE_NAME, null, values); if (result >= 0) { Toast.makeText(MainActivity.this, "插入数据成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "插入数据失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_updateApi: /** * update(String table, ContentValues values, String whereClause, String[] whereArgs) * String table 表示修改的数据表的名称 * ContentValues values 表示键为String类型的HashMap * String whereClause 表示修改条件 * String[] whereArgs 表示修改条件的占位符 * 返回值 int 表示修改的条数 */ ContentValues cv = new ContentValues(); cv.put(Constant.NAME, "小红"); //put(需要修改的字段名称,修改后的字段值) //int count = db.update(Constant.TABLE_NAME, cv, Constant._ID + "=3", null); int count = db.update(Constant.TABLE_NAME, cv, Constant._ID + "=?", new String[]{"3"}); if (count > 0) { Toast.makeText(MainActivity.this, "修改数据成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "修改数据失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_deleteApi: /** * delete(String table, String whereClause, String[] whereArgs) * String table 表示删除数据表的名称 * String whereClause 表示删除的条件 * String[] whereArgs 表示删除条件的占位符 */ int counts2 = db.delete(Constant.TABLE_NAME, Constant._ID + "=?", new String[]{"1"}); if (counts2 > 0) { Toast.makeText(MainActivity.this, "删除数据成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "删除数据失败", Toast.LENGTH_SHORT).show(); } break; } db.close();//防止资源占用 } }; }
界面布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <Button android:id="@+id/btn_create" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="创建数据库" /> <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="插入数据" /> <Button android:id="@+id/btn_update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改数据" /> <Button android:id="@+id/btn_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除数据" /> <Button android:id="@+id/btn_insertApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="API插入数据" /> <Button android:id="@+id/btn_updateApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="API修改数据" /> <Button android:id="@+id/btn_deleteApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="API删除数据" /> </LinearLayout>
四、操作界面
首次安装apk后,查看RE文件管理器
五、点击相应按钮后数据库变化
1.创建数据库
2.插入数据
3.修改数据
4.删除数据
5.API插入数据
6.API修改数据
7.API删除数据
标签:教程 cto open img hid util ted tac 磁盘
原文地址:http://www.cnblogs.com/bky1225987336/p/6617150.html