华艺网络网站开发,dw简单网页制作代码,网络营销工具体系,优秀网站建设公司2019独角兽企业重金招聘Python工程师标准 1.1. 什么时候使用数据库 有大量相似结构的数据需要存储的时候就可以使用数据库。 1.2. SQLite的简介 SQLite是一款轻量级的数据库。它的设计目标是嵌入式的#xff0c;而且目前已经在很多嵌入式产品中使用了它。Androi… 2019独角兽企业重金招聘Python工程师标准 1.1. 什么时候使用数据库 有大量相似结构的数据需要存储的时候就可以使用数据库。 1.2. SQLite的简介 SQLite是一款轻量级的数据库。它的设计目标是嵌入式的而且目前已经在很多嵌入式产品中使用了它。Android系统和iOS系统中都嵌入了SQLite数据库。 1.3. SQLite数据库的创建流程 (1) 定义一个类继承SQLiteOpenHelper。 (2) 添加一个构造函数 public MyOpenHelper(Context context) {super(context, test.db, null,1);
}1234第2行调用父类的构造方法。 参数1代表上下文 参数2代表数据库的名字 参数3代表游标工厂通常为null 参数4代表数据库版本从1开始。 (3) 实现oncreate(),和onUpgrade()方法。 1.4. onCreate()和onUpgrade()方法 onCreate()方法是当数据库第一次创建的时候调用这个方法适合做表结构的初始化创建表也就是编写sql语句。 Override
public void onCreate(SQLiteDatabase db) {db.execSQL(create table info(_id integer primary key autoincrement,name varchar(20),phone varchar(20)));
}12345第3行执行sql语句。 onUpgrade()方法是当数据库版本升级的时候调用一般在方法中做表结构的更新 Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL(alter table info add phone varchar(20));
}12345 1.5. 获取数据库对象 通过getWritableDatabase()和getReadableDatabase()获取数据库对象。 方法解释getWritableDatabase()打开或者创建数据库用来读和写如果是第一次就是创建。getReadableDatabase()打开或者创建数据库和getWritableDatabases()一样如果是第一次就是创建除非发生某些问题如果磁盘满了那么就返回只读的数据库对象。 2. 使用sql语句增删改查 缺点 1.sql语句容易写错 2.执行sql语句没有返回值。 2.1. 插入记录 public void click1(View v){SQLiteDatabase db myOpenHelper.getWritableDatabase();db.execSQL(insert into info(name,phone) values(?,?), new Object[]{张三,1388888});db.close();
}1234567第2行获取数据库对象 第3行执行sql语句向info表中插入一条记录 第5行关闭数据库。 2.2. 删除记录 public void click2(View v){SQLiteDatabase db myOpenHelper.getWritableDatabase();db.execSQL(delete from info where name?, new Object[]{张三});db.close();
}123456 2.3. 修改数据 public void click3(View v){SQLiteDatabase db myOpenHelper.getWritableDatabase();db.execSQL(update info set phone? where name? ,new Object[]{138888888,张三});db.close();
}1234567 2.4. 查找 //查找
public void click4(View v){SQLiteDatabase db myOpenHelper.getReadableDatabase();Cursor cursor db.rawQuery(select * from info, null);if (cursor! nullcursor.getCount()0) {while(cursor.moveToNext()){//columnIndex代表列的索引 String name cursor.getString(1);String phone cursor.getString(2);System.out.println(name:name----phone);}}
}1234567891011121314Cursor游标是从第一条数据之前开始的 第5行cursor.getCount()获取记录数 第6行cursor.moveToNext()将游标移动到下一条记录如果有记录则返回true如果没有则返回false。 3. 使用谷歌封装好的api增删改查 优点 写法简单不需要复杂的sql语句不容易写错 有返回值方便开发者开发。 缺点 如果有多张表使用谷歌封装的api不容易进行查询。 3.1. 插入记录 public void click1(View v) {SQLiteDatabase db myOpenHelper.getWritableDatabase();ContentValues values new ContentValues();values.put(name, 王五);values.put(phone, 110);long insert db.insert(info, null, values); db.close();if (insert 0) {Toast.makeText(getApplicationContext(), 添加成功, 1).show();} else {Toast.makeText(getApplicationContext(), 添加fail, 1).show();}
}1234567891011121314第3行ContentValues内部封装了一个mapkey是对应列的名字value对应值 第6行insert()方法返回值代表插入新行的id如果该返回值数值大于0那么久插入成功其底层就是在组拼sql语句。 3.2. 删除记录 public void click2(View v) {SQLiteDatabase db myOpenHelper.getWritableDatabase();int delete db.delete(info, name?, new String[] { 王五 });db.close();Toast.makeText(getApplicationContext(), 删除了 delete 行, 0).show();
}1234567第3行delete()方法返回值代表影响的行数。 3.3. 修改数据 public void click3(View v) {SQLiteDatabase db myOpenHelper.getWritableDatabase();ContentValues values new ContentValues();values.put(phone, 114);int update db.update(info, values, name?, new String[] { 王五 });db.close();Toast.makeText(getApplicationContext(), 更新了 update 行, 0).show();
}123456789第5行update()方法返回值代表更新了多少行。 3.4. 查找 public void click4(View v) {SQLiteDatabase db myOpenHelper.getReadableDatabase();Cursor cursor db.query(info, null, null, null, null, null, null);if (cursor ! null cursor.getCount() 0) {while (cursor.moveToNext()) {String name cursor.getString(1);String phone cursor.getString(2);}}
}1234567891011第3行query方法返回查询到的CursorCursor就是查询到的结果集。方法参数代表的含义 参数含义table查询的表名columns查询的列selection查询条件一般会使用占位符如”name?”selectionArgs查询条件的参数groupBy分组orderBy排序 desc(降序) asc(升序) 4. 使用命令行工具 sqlite3 打开cmd命令行工具输入adb shell命令挂载到linux空间。 进入data/data目录下输入命令cd data/data。 ls列出所有目录 进入我们应用的包名目录下cd包名。 然后进入databases目录下 打开数据库sqlite3数据库名称 执行sql语句进行操作 改变dos的编码方式 改成gbk编码方式chcp 936 改成utf-8编码方式chcp 65001。 转载于:https://my.oschina.net/u/2884845/blog/740725