xml

<?xml version="1.0"?>

-<LinearLayout tools:context=".MainActivity" android:orientation="vertical" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

<Button android:id="@+id/bt_add" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="@string/add"/>

<Button android:id="@+id/bt_del" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="@string/del"/>

<Button android:id="@+id/bt_update" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="@string/update"/>

<Button android:id="@+id/bt_query" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="@string/query"/>

<ListView android:id="@+id/lv_databases" android:layout_height="match_parent" android:layout_width="fill_parent"/>

</LinearLayout>

数据库按钮设计

java

package com.itheima.crud;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListView;
import android.widget.Toast; import com.itheima.crud2_listview.R;
import com.itheima.crud.adapter.QueryAdapter;
import com.itheima.crud.bean.InfoBean;
import com.itheima.crud.dao.InfoDao; public class MainActivity extends Activity implements OnClickListener { private Context mContext;
private ListView lv_databases;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mContext = this;
//创建一个帮助类对象
MySqliteOpenHelper mySqliteOpenHelper = new MySqliteOpenHelper(mContext);
//调用getReadableDatabase方法,来初始化数据库的创建
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase(); //找到相应控件
findViewById(R.id.bt_add).setOnClickListener(this); findViewById(R.id.bt_del).setOnClickListener(this);
findViewById(R.id.bt_update).setOnClickListener(this);
findViewById(R.id.bt_query).setOnClickListener(this); //找到listview
lv_databases = (ListView) findViewById(R.id.lv_databases); }
@Override
public void onClick(View v) {
InfoDao infoDao = new InfoDao(mContext);//创建一个dao对象做增删改查 switch (v.getId()) {
case R.id.bt_add: InfoBean bean = new InfoBean();
bean.name = "张三";
bean.phone ="110";
boolean result = infoDao.add(bean);
if(result){
Toast.makeText(mContext, "添加成功", 0).show();
}else{
Toast.makeText(mContext, "添加失败", 0).show();
} break; case R.id.bt_del: int del = infoDao.del("张三");
Toast.makeText(mContext, "成功删除"+del+"行", 0).show();
break; case R.id.bt_update: InfoBean bean2 = new InfoBean();
bean2.name = "张三";
bean2.phone ="119";
int update = infoDao.update(bean2);
Toast.makeText(mContext, "成功修改"+update+"行", 0).show();
break; case R.id.bt_query:
//获取查询的数据
ArrayList<InfoBean> arrayList = infoDao.query("张三");
//封装adapter
QueryAdapter queryAdapter = new QueryAdapter(mContext,arrayList);
//将adapter设置给listview
lv_databases.setAdapter(queryAdapter);
break; default:
break;
} } }

MainActivity

package com.itheima.crud;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper; public class MySqliteOpenHelper extends SQLiteOpenHelper { public MySqliteOpenHelper(Context context) { //context :上下文 , name:数据库文件的名称 factory:用来创建cursor对象,默认为null
//version:数据库的版本号,从1开始,如果发生改变,onUpgrade方法将会调用,4.0之后只能升不能将
super(context, "info.db", null,1);
} //oncreate方法是数据库第一次创建的时候会被调用; 特别适合做表结构的初始化,需要执行sql语句;SQLiteDatabase db可以用来执行sql语句
@Override
public void onCreate(SQLiteDatabase db) {
//通过SQLiteDatabase执行一个创建表的sql语句
db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))");
} //onUpgrade数据库版本号发生改变时才会执行; 特别适合做表结构的修改
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//添加一个phone字段
// db.execSQL("alter table info add phone varchar(11)");
} }

MySqliteOpenHelper

package com.itheima.crud.dao;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import com.itheima.crud.MySqliteOpenHelper;
import com.itheima.crud.bean.InfoBean; public class InfoDao { private MySqliteOpenHelper mySqliteOpenHelper;
public InfoDao(Context context){
//创建一个帮助类对象
mySqliteOpenHelper = new MySqliteOpenHelper(context); } public boolean add(InfoBean bean){ //执行sql语句需要sqliteDatabase对象
//调用getReadableDatabase方法,来初始化数据库的创建
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase(); ContentValues values = new ContentValues();//是用map封装的对象,用来存放值
values.put("name", bean.name);
values.put("phone", bean.phone); //table: 表名 , nullColumnHack:可以为空,标示添加一个空行, values:数据一行的值 , 返回值:代表添加这个新行的Id ,-1代表添加失败
long result = db.insert("info", null, values);//底层是在拼装sql语句 //关闭数据库对象
db.close(); if(result != -1){//-1代表添加失败
return true;
}else{
return false;
}
} public int del(String name){ //执行sql语句需要sqliteDatabase对象
//调用getReadableDatabase方法,来初始化数据库的创建
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase(); //table :表名, whereClause: 删除条件, whereArgs:条件的占位符的参数 ; 返回值:成功删除多少行
int result = db.delete("info", "name = ?", new String[]{name});
//关闭数据库对象
db.close(); return result; }
public int update(InfoBean bean){ //执行sql语句需要sqliteDatabase对象
//调用getReadableDatabase方法,来初始化数据库的创建
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();
ContentValues values = new ContentValues();//是用map封装的对象,用来存放值
values.put("phone", bean.phone);
//table:表名, values:更新的值, whereClause:更新的条件, whereArgs:更新条件的占位符的值,返回值:成功修改多少行
int result = db.update("info", values, "name = ?", new String[]{bean.name});
//关闭数据库对象
db.close();
return result; }
public ArrayList<InfoBean> query(String name){ ArrayList<InfoBean> list = new ArrayList<InfoBean>(); //执行sql语句需要sqliteDatabase对象
//调用getReadableDatabase方法,来初始化数据库的创建
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase(); //table:表名, columns:查询的列名,如果null代表查询所有列; selection:查询条件, selectionArgs:条件占位符的参数值,
//groupBy:按什么字段分组, having:分组的条件, orderBy:按什么字段排序
Cursor cursor = db.query("info", new String[]{"_id","name","phone"}, "name = ?", new String[]{name}, null, null, "_id asc");
//解析Cursor中的数据
if(cursor != null && cursor.getCount() >0){//判断cursor中是否存在数据 //循环遍历结果集,获取每一行的内容
while(cursor.moveToNext()){//条件,游标能否定位到下一行
InfoBean bean = new InfoBean();
//获取数据
bean. id = cursor.getInt(0)+"";
bean. name = cursor.getString(1);
bean. phone = cursor.getString(2); list.add(bean); }
cursor.close();//关闭结果集 }
//关闭数据库对象
db.close(); return list;
}
}

包 dao

package com.itheima.crud.bean;

public class InfoBean {

    public String id;
public String name;
public String phone;
}

包 bean

package com.itheima.crud.adapter;

import java.util.ArrayList;

import com.itheima.crud.bean.InfoBean;
import com.itheima.crud2_listview.R; import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; public class QueryAdapter extends BaseAdapter{ private Context mContext;
private ArrayList<InfoBean> arrayList; public QueryAdapter(Context mContext, ArrayList<InfoBean> arrayList) {
this.mContext = mContext;
this.arrayList = arrayList;
} @Override
public int getCount() {
return arrayList.size();
} @Override
public Object getItem(int position) {
return arrayList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { //复用convertView
View view = null;
if(convertView != null){
view = convertView;
}else {
view = View.inflate(mContext, R.layout.item_database_layout, null);
} //找到控件
TextView item_tv_id = (TextView) view.findViewById(R.id.item_tv_id);
TextView item_tv_name = (TextView) view.findViewById(R.id.item_tv_name);
TextView item_tv_phone = (TextView) view.findViewById(R.id.item_tv_phone);
//找到内容
InfoBean infoBean = arrayList.get(position); //设置内容
item_tv_id.setText(infoBean.id);
item_tv_name.setText(infoBean.name);
item_tv_phone.setText(infoBean.phone); return view;
} }

包 adapter

新闻会了,这个就会了

android ListView_显示数据库数据的更多相关文章

  1. QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据

    QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 參考链接: http:// ...

  2. Qt 学习之路 2(57):可视化显示数据库数据

    Qt 学习之路 2(57):可视化显示数据库数据(skip) 豆子 2013年6月26日 Qt 学习之路 2 26条评论 前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法.显然,使用QSq ...

  3. C#在listview控件中显示数据库数据

    一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...

  4. Wcf for wp8 连接数据库,读写数据库,显示数据库数据(二)

    下载: Microsoft® SQL Server® 2012 Express http://www.microsoft.com/zh-cn/download/details.aspx?id=2906 ...

  5. android之显示数据库信息

    关键字 ListView adapter MVC 在android开发中也使用到了MVC架构,其中的xml布局文件就是V,M就是我们定义好的javabean类,而控制器就是就是适配器类adapter ...

  6. Qt 学习之路 :可视化显示数据库数据

    前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法.显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用 ...

  7. android中的数据库操作(转)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  8. 【转】Android开发之数据库SQL

    android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 android中采用的数据库是SQLi ...

  9. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

随机推荐

  1. 深入解析 ext2 文件系统

     很久以来,就想写一篇关于ext 家族文件系统的文章,源于我刚工作的时候,曾经一不小心rm -rf,误删除了很多文件,当时真想有个数据恢复软件能帮我把数据回复了.当然学习数据恢复,首先要学习文件系统. ...

  2. 聊聊 Xcode 项目文件中的 project.pbxproj

    project.pbxproj 文件被包含于 Xcode 工程文件 *.xcodeproj 之中,存储着 Xcode 工程的各项配置参数.它本质上是一种旧风格的 Property List 文件,历史 ...

  3. 采用handle消息机制实现轮播效果

    // 自动轮播条显示 if (mhandle == null) { mhandle = new Handler() { public void handleMessage(Message mes) { ...

  4. iOS 关于流媒体 的初级认识与使用

    1.流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频.视频或多媒体文件.流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播 ...

  5. label添加手势(触摸改变其背景颜色)

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  6. 【阿里云产品公测】OTS使用之简单线上产品实践基于PythonSDK

    阿里云用户:morenocjm 实践是检验真理的唯一标准,学习技术需要通过实践过程中的不断尝试,才能够快速掌握要领.OTS是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存 ...

  7. KVC 和 KVO 简单总结

    KVC: key value coding,键值编码.是一种通过使用属性的名称(key)来间接访问对象属性的方法.这个方法可以不用通过 setter/getter 方法来访问对象的属性.该方法使用的实 ...

  8. (转)内网网站发布到外网-nat123动态公网IP动态域名解析

    环境描述: 路由器分配的是动态公网IP,且有路由器登录管理权限,网站服务器部署在路由器内部网络.如何将内网网站发布到外网大众访问? 解决方案: 内网使用nat123动态域名解析,将域名实时固定解析到路 ...

  9. Oracle安装步骤及PL/SQL Developer连接数据库

    一:Oracle安装步骤及PL/SQL Developer连接数据库 win7 64位 11g 点击(操作步骤):http://www.cnblogs.com/haoke/articles/27343 ...

  10. React Native学习-CameraRoll

    react-native中CameraRoll模块提供了访问本地相册的功能. 在react版本为0.23.0的项目中,不支持Android,而且在iOS中使用CameraRoll还需要我们手动操作: ...