安卓基础3:数据库和ListView

安卓基础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();

 

代码:



getReadableDatabase vs getWriteableDatabase

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

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

 

数据库操作:增删改查:

方法一:

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

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

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

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

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

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

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

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

代码:
界面


事物处理:



点击方法


数据库对象:


方法二:

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

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

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

 

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

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

 

数据库中的事物:

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

代码




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

增:

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

法二:

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();

改:

法一:

法二:


JDBC:

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

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

pstmt.setString(user.phone);

pstmt.UpdateQuerry();

 

查:

法一:

法二:

JDBC:

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

pstmt=conn. prepareStatement(Sql);

pstmt.setString(user.name);

resultSetrs= pstmt.executeQuerry();

 

通过adb去操作数据库

 

数据库的事务:

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


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、 设置界面


2、 事务处理


老虎机练习

代码:

界面:


事物处理:


Listview优化

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

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界面:


Listview内部内容:


事物处理:




数据层:


注意:

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

 

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值