Android 数据库操作
2017-03-04 22:30
302 查看
废话不多说 看代码注释
--
验证数据库文件是否存在的方法看最后部分
剩下的工作就是对数据库表的增删改查了
首先通过下面的代码获得一个引用以便操作数据库
对于增删改都可以用 db.execSQL(String sql); 来执行sql语句。 例如增加一条记录
遇到字符串要转义 有没有觉得很蛋疼, 用下面的方法就好多了
sql 中用 ? 占位 后面传入真正的参数, 由于在创建表的时候已经约定pages 和 price字段的数据类型为integer和real, 虽然代码中写的是字符串并不影响,存入数据库会自动处理的。数组嘛,必须与其他的元素类型一致。 这第二个方式是 execSQL(String sql)的重载方法 api是 public void execSQL(String sql, Object[] bindArgs) throws SQLException
对于查询则要使用 rawQuery(String sql, String[] selectionArgs) , 因为 execSQL返回void ,而查询需要访问查询结果。方法如下
如何检查数据库文件是否存在,以及检查表中的数据呢。
前提是使用模拟器或者root过的真机。从 android studio 菜单中 Tools -> Android -> Android Device Monitor -> File Explorer 找到 data/data/程序包名/databases 目录
查看是否存在数据库文件。如果存在可以导出到电脑上, 用 以下工具查看数据库中的表
还有一种方式是使用android sdk 中的命令行工具操作, 命令行操作比较麻烦,后面专门开一篇讲。
SQL 速查手册
SQL 教程 http://www.w3school.com.cn/sql/index.asp
SQL 教程 | 菜鸟教程 http://www.runoob.com/sql/sql-tutorial.html
SQL Tutorial https://www.w3schools.com/sql/default.asp (英文)
public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 3); // 执行这句并不会创建数据库文件 Button btnCreateDatabase = (Button) findViewById(R.id.button); btnCreateDatabase.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dbHelper.getWritableDatabase(); // 执行这句才会创建数据库文件 } }); } }
--
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table book (" + "id integer primary key autoincrement, " + "author text, " + "price real," + "pages integer, " + "name text)"; private Context mContext; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); mContext = context; } /** * 数据库已经创建过了, 则不会执行到,如果不存在数据库则会执行 * @param db */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_BOOK); // 执行这句才会创建表 Toast.makeText(mContext, "create succeeded", Toast.LENGTH_SHORT).show(); } /** * 创建数据库时不会执行,增大版本号升级时才会执行到 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 在这里面可以把旧的表 drop掉 从新创建新表, // 但如果数据比较重要更好的做法还是把旧表的数据迁移到新表上,比如升级qq聊天记录被删掉肯定招骂 Toast.makeText(mContext, "onUpgrade oldVersion:" + oldVersion + " newVersion:" + newVersion, Toast.LENGTH_SHORT).show(); } }
验证数据库文件是否存在的方法看最后部分
剩下的工作就是对数据库表的增删改查了
首先通过下面的代码获得一个引用以便操作数据库
SQLiteDatabase db = dbHelper.getWritableDatabase();
对于增删改都可以用 db.execSQL(String sql); 来执行sql语句。 例如增加一条记录
db.execSQL("insert into book(name , author, pages, price) values(\"Android数据库操作指南\", \"panda fang\", 200, 35.5)");
遇到字符串要转义 有没有觉得很蛋疼, 用下面的方法就好多了
db.execSQL("insert into book(name , author, pages, price) values(?, ? ,? ,? )", new String[]{"Android数据库操作指南", "panda fang", "200", "35.5"});
sql 中用 ? 占位 后面传入真正的参数, 由于在创建表的时候已经约定pages 和 price字段的数据类型为integer和real, 虽然代码中写的是字符串并不影响,存入数据库会自动处理的。数组嘛,必须与其他的元素类型一致。 这第二个方式是 execSQL(String sql)的重载方法 api是 public void execSQL(String sql, Object[] bindArgs) throws SQLException
对于查询则要使用 rawQuery(String sql, String[] selectionArgs) , 因为 execSQL返回void ,而查询需要访问查询结果。方法如下
Cursor cursor = db.rawQuery("select * from book", null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); String author = cursor.getString(cursor.getColumnIndex("author")); Log.i(TAG, "name:" + name + " author:" + author); } cursor.close();
如何检查数据库文件是否存在,以及检查表中的数据呢。
前提是使用模拟器或者root过的真机。从 android studio 菜单中 Tools -> Android -> Android Device Monitor -> File Explorer 找到 data/data/程序包名/databases 目录
查看是否存在数据库文件。如果存在可以导出到电脑上, 用 以下工具查看数据库中的表
sqlitespy | 简洁轻量 免费 |
SQLite Studio | 免费 |
SQLite Expert | 强大重量 个人版免费 专业版收费 |
Navicat for SQLite | 强大 收费 |
更多请自行搜索...... |
SQL 速查手册
SQL 教程 http://www.w3school.com.cn/sql/index.asp
SQL 教程 | 菜鸟教程 http://www.runoob.com/sql/sql-tutorial.html
SQL Tutorial https://www.w3schools.com/sql/default.asp (英文)
相关文章推荐
- Android数据库操作总结
- Android开发中对数据库的操作
- Android数据库的批处理操作(以添加联系人为例)
- android adb数据库操作
- 快速上手Android数据库操作
- android数据库操作会出现Leak found,即出现泄漏问题解决
- 【转载】Using SQLite from Shell in Android(在shell 下使用sqlite命令操作数据库)
- android数据库事务操作详解
- Android数据库的批处理操作(以添加联系人为例)
- android SQLite数据库基本操作示例
- 【Android】SqLitOpenHelper操作数据库
- Android 中短信数据库的简单操作
- Android教程之SQlit数据库操作
- 快速上手Android数据库操作
- 数据库android操作
- android中的数据库操作
- Android数据库操作
- android 数据库技术 | 文件系统,SDCARD访问,CONTENT PROVIDER,SQLITE ,CURSOR操作,CURSOR适配器,SQLITEHELPER,数据库设计模式
- Android演示操作数据库之二
- android中数据库操作简介