Android使用谷歌封装好的api增删查改
来源:互联网 发布:摄像头美化软件 编辑:程序博客网 时间:2024/05/18 02:42
public class MainActivity extends AppCompatActivity { private MyOpenHelper myOpenHelper; private ListView lv; private List<Person> lists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //0 找到lv lv = (ListView) findViewById(R.id.lv); myOpenHelper = new MyOpenHelper(getApplicationContext()); //1 定义一个集合用来存listview要显示的数据 lists = new ArrayList<>(); //打开或者创建数据库 如果是第一次就创建// SQLiteDatabase sqLiteDatabase = myOpenHelper.getWritableDatabase(); //打开或者创建数据库 如果是第一次就创建 如果磁盘满了 返回只读的// SQLiteDatabase readableDatabase = myOpenHelper.getReadableDatabase(); } //点击按钮增加一条记录 public void click1(View v) { //1 获取数据库对象 SQLiteDatabase db = myOpenHelper.getWritableDatabase(); //2 执行增加一条的sql语句// db.execSQL("insert into info(name,phone) values(?,?)", new Object[]{"张三","13888"}); /** * table 表名 * ContentValues 内部封装了一个map key:对应列的名字 value对应的值 */ ContentValues values = new ContentValues(); values.put("name", "王五"); values.put("phone", "110"); //返回值代表插入新行的id long insert = db.insert("info", null, values); //底层就在组拼sql语句 //3 数据库用完需要关闭 db.close(); if (insert>0) { Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT).show(); } } //删除 public void click2(View v) { SQLiteDatabase db = myOpenHelper.getWritableDatabase();// db.execSQL("delete from info where name=?", new Object[]{"张三"}); //返回值代表影响的行数 int delete = db.delete("info", "name=?", new String[]{"王五"}); db.close(); Toast.makeText(getApplicationContext(), "删除了"+delete+"行", Toast.LENGTH_SHORT).show(); } //更新 public void click3(View v) { SQLiteDatabase db = myOpenHelper.getWritableDatabase();// db.execSQL("update info set phone=? where name=?",new Object[]{"13999","张三"}); ContentValues values = new ContentValues(); values.put("phone", "114"); //代表更新多少行 int update = db.update("info", values, "name=?", new String[]{"王五"}); db.close(); Toast.makeText(getApplicationContext(), "更新了"+update+"行", Toast.LENGTH_SHORT).show(); } //查找 public void click4(View v) { SQLiteDatabase db = myOpenHelper.getWritableDatabase(); //columns 代表你要查询的列 //selection 根据什么查询phone// Cursor cursor =db.query("info", new String[]{"name","phone"}, "name=?", new String[]{"王五"}, null, null, null); Cursor cursor = db.query("info", null, null, null, null, null, null);// Cursor cursor = db.rawQuery("select * from info", null); if (cursor!= null && cursor.getCount()>0) { while (cursor.moveToNext()) { //columnIndex代表列的索引 String name = cursor.getString(1); String phone = cursor.getString(2);// Log.d("Test", "name:"+name+"----"+phone); //把数据封装到javabean Person person = new Person(); person.setName(name); person.setPhone(phone); //把javabean对象加入到集合 lists.add(person); } lv.setAdapter(new MyAdapter()); } } // TODO: 2017/4/15 //定义listview的适配器 private class MyAdapter extends BaseAdapter { @Override public int getCount() { return lists.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { //创建新的view对象 inflate打气筒 view = View.inflate(getApplicationContext(), R.layout.item, null); } else { view = convertView; } //找到控件用来显示数据 TextView tv_name = (TextView) view.findViewById(R.id.tv_name); TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone); //如何显示数据 Person person = lists.get(position); tv_name.setText(person.getName()); tv_phone.setText(person.getPhone()); return view; } }}
这里有个小插曲,在MyAdapter类中调用findViewById是找不到控件Id的,会报NullPointerException,需要在前面加类内定义好的view。
//找到控件用来显示数据 TextView tv_name = (TextView) view.findViewById(R.id.tv_name); TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
public class MyOpenHelper extends SQLiteOpenHelper { /** * * @param context 上下文 * @param name 数据库的名字 * @param factory 目的创建cursor对象 * @param version 数据库的版本 从i开始 */ public MyOpenHelper(Context context) { super(context, "itheima.db", null, 1); } /** *当数据库第一次创建的时候调用 * 那么这个方法特别适合做表结构的初始化 创建表就是写sql语句 * @param db */ @Override public void onCreate(SQLiteDatabase db) { //id 一般为 _id db.execSQL("create table info(_id integer primary key autoincrement, name varchar(20), phone varchar(20))"); } /** * Called when the database needs to be upgraded * 当数据库版本升级的时候调用 * 这个方法适合做表结构的更新 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("alter table info add phone varchar(20)"); }}
1 0
- Android使用谷歌封装好的api增删查改
- android封装好的方法写增删改查
- android数据库使用系统封装的api实现SQLite数据库的增删改查
- 用谷歌封装好的API进行数据库增删查改(crud)
- 原生代码封装好的增删改查
- 通过Sql语句和android封装好的方法控制SQLite数据库增删改查
- 原生代码封装好增删改查
- 用谷歌封装号的api增删改查
- easyui使用ajax增删改查的封装
- 数据库增删改查使用的函数封装
- Android对SQLite数据库进行封装使用反射来进行表的增删改查
- [Android] 好用的数据库Realm 简单使用 增删改查
- 封装thinkphp的增删改查
- 封装的DBUtil 简化增删改查
- JSP数据库的封装,增删改查
- sql数据增删改查的封装
- Jdbc封装的增删查改
- Jdbc封装的增删查改
- 跳跃游戏
- 递推递归练习--O(螺旋方阵)
- 递推递归练习P
- 蓝桥杯-基础试题-试笔-01字串
- 手把手git教程(05)--远程仓库推送和克隆
- Android使用谷歌封装好的api增删查改
- java类型自动装箱拆箱和字符串与基本类型的装换
- 【GDOI2017模拟一试4.11】腐女的生日(线段树+维护一次函数)
- 部署应用到Tomcat服务器
- BZOJ 3809: Gty的二逼妹子序列
- Algorithms
- Java String 格式化示例
- 并发服务器模型实现的方法
- 122.xUtils使用inject取代findViewById的方法填充布局