安卓基础3:数据库和ListView

时间:2024-04-09 21:19:33

安卓基础3:数据库和ListView

数据库

常用数据库:

Mysql

sqlserver

SQLite(轻量级 嵌入内置)

android中数据库的适用范围:

有大量结构相同的数据存储时,查询速度非常快;

数据库的创建:

1、 创建一个类继承SQLiteopenHelpr

2、 实现oncreate方法

数据库第一次创建的时候调用,特别适合做表结构的初始化

db.execSQL(create table info(id integer,name varchar(20)));

3、 实现onupergrade方法

数据库升级的时候

Db.execSQL(alerttable info add phone varchar(20));

4、 添加一个构造方法

Super(context,”user.db”,null,1);// 上下文,存储的database名字,,版本号

5、 创建一个帮助类的对象,调用getReaableDatabale即可创建一个数据库

MyOpnHelper myOpenhelper= new MyOpnHelper();

SQLiteDatabasedb = myOpenhelper.getReadableDatabase();

 

代码:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

getReadableDatabase vs getWriteableDatabase

getReadableDatabase:首先会调用getWriteableDatabase方法以读写方式打开数据,如果存放数据库的磁盘空间满了,就会以读写方式打开失败;那么就会以只读方式打开数据库

getWriteableDatabase:直接以读写方式打开数据库,如果磁盘空间满了就直接报错了;

 

数据库操作:增删改查:

方法一:

1、创建一个帮助类的对象

2、 通过帮助类对象创建一个获取操作库操作对象SQLiteDatabases

3、 通过SQLiteDatabases中的excesql()可以执行增删改操作‘

4、 通过sqliteDatabases中的rawQuery()可以查询结果集

通过结果集可以遍历获取表中的内容

缺点:直接写SQL语句容易写错

              增删改没有返回值,无法确定是否执行成功。

注意:数据库版本2.33可升可降。4.1只能升。

代码:

界面

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

事物处理:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

点击方法

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

数据库对象:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

方法二:

1、 创建一个帮助类的对象

2、 通过帮助类对象创建一个获取操作库操作对象sqliteDatabases

3、 通过sqliteDataBases中的insertdelete update query方法可以直接窒执行

 

优点:写sql语句不容易出错,增删改有返回值

缺点:查询不灵活,尤其是多表查询

 

数据库中的事物:

要么多条sql语句同时成功执行,要么失败;

代码

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

增删改查:方法一 vs 方法二vs “JDBC”

增:

法一:db.execSQL(“insertinto info values(name,phone)  values(?,?)”,new object[]{user.name,user.phone})

法二:

安卓基础3:数据库和ListView

JDBC:

Sql=”insertinto info values(?,?)”

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

pstmt.setString(user,phone)

pstmt.executeQuerry();

 

 

删:

法一:db.execSQL(“deletefrom info where name = ?“ new Object[](user.name));

法二:db.delete(“info”,”name= ?”,new String[]{user.name})

JDBC:

Sql=”deletefrom info where name= ?”

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

pstmt.UpdateQuerry();

改:

法一:

安卓基础3:数据库和ListView

法二:

安卓基础3:数据库和ListView

JDBC:

Sql=”updateinfo set name= ?,phone = ?”

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

pstmt.setString(user.phone);

pstmt.UpdateQuerry();

 

查:

法一:

安卓基础3:数据库和ListView

法二:

安卓基础3:数据库和ListView

JDBC:

Sql=”select*from info where name = ?”

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

resultSetrs= pstmt.executeQuerry();

 

通过adb去操作数据库

 

数据库的事务:

这里通过在按钮上布置了transaction()方法调用该方法。

安卓基础3:数据库和ListView

listView

listView是安卓中的一个特殊的控件;

五大布局:Button,TextView,EditText,CheckBox,ImageView

LisetView创建

1、 在布局文件中写一个ListView控件

2、 创建一个类继承BaseAdapter实现4个方法,getcount,getview是必须实现的,

a)      getcount:告诉listview要展示多少条目

b)     getview:告诉listview每个条目要显示的内容,屏幕每显示一条数据就会调用一次

3、 创建一个Adapter对象,设置给listview做数据显示

代码:

1、 设置界面

安卓基础3:数据库和ListView

2、 事务处理

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView安卓基础3:数据库和ListView

*练习

代码:

界面:

安卓基础3:数据库和ListView

事物处理:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView安卓基础3:数据库和ListView

Listview优化

在getView方法中会传递过来一个convertView对象,我们可以服用该对象getView的返回对象,但是在使用前需要判断对象是否为null,如果不为空则直接使用,如果为空则手动返回对象

安卓基础3:数据库和ListView

Lisetview显示原理

1、 首先知道listview显示的条数,getcount

2、 Listview中显示的内容,getview

3、 要知道listview中每个条目的高度,要知道一屏显示多少条

4、 要监听listview的滑动,一出一个旧的条目,显示一个新的条目

 

注意:ListView如果布局不是充满屏幕,则它会自动去尝试占满整个屏幕,后果是多开辟好多个listView;

 

网易新闻练习:

1、 在不居中写ListView

2、 写一些新闻的模拟数据,以list集合bean

3、 把数据设置给adapter适配器,适配器去给listview做展示

4、 定义一个显示新闻的布局作为适配器getview方法做返回内容

5、 找到listView设置adapter适配器

6、 设置listview每个条目的点击事件,点击后跳转到新闻

界面:

代码

界面

Listview界面:

安卓基础3:数据库和ListView

Listview内部内容:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

事物处理:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

数据层:

安卓基础3:数据库和ListView

安卓基础3:数据库和ListView

注意:

1、getItem的理解:我去获取position位置所对应的bean对象里面的内容

 

获取布局填充器的常见三种方式:

安卓基础3:数据库和ListView