zoukankan      html  css  js  c++  java
  • Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在《Android SQL语句实现数据库的增删改查》中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用。

    系统API实现数据库的增删改查

    相关代码修改如下:

    package com.wuyudong.db.dao;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.wuyudong.db.PersonSQLiteOpenHelper;
    import com.wuyudong.db.domain.Person;
    
    public class PersonDao {
        private PersonSQLiteOpenHelper helper;
    
        public PersonDao(Context context) {
            helper = new PersonSQLiteOpenHelper(context);
        }
    
        /**
         * 添加一条记录到数据库
         * 
         * @param name
         *            姓名
         * @param number
         *            电话
         */
        public void add(String name, String number) {
            SQLiteDatabase db = helper.getWritableDatabase();
            // db.execSQL("insert into person (name,number) values (?,?)",
            // new Object[] { name, number });
            ContentValues values = new ContentValues();
            values.put("name", name);
            values.put("number", number);
            db.insert("person", null, values);
            db.close();
        }
    
        /**
         * 查询记录是否存在
         * 
         * @param name
         *            姓名 return true存在, false不存在
         */
        public boolean find(String name) {
            SQLiteDatabase db = helper.getReadableDatabase();
            // Cursor cursor = db.rawQuery("select * from person where name=?",
            // new String[] { name });
            Cursor cursor = db.query("person", null, "name=?",
                    new String[] { name }, null, null, null);
            boolean result = cursor.moveToNext();
            cursor.close();
            db.close();
            return result;
        }
    
        /**
         * 
         * @param name
         *            要修改的人的姓名
         * @param newnumber
         *            新的号码
         */
        public void update(String name, String newnumber) {
            SQLiteDatabase db = helper.getReadableDatabase();
            // db.execSQL("update person set number=? where name=?", new Object[] {
            // newnumber, name });
            ContentValues values = new ContentValues();
            values.put("number", newnumber);
            db.update("person", values, "name=?", new String[] { newnumber });
            db.close();
        }
    
        /**
         * 删除一条记录
         * 
         * @param name
         */
        public void delete(String name) {
            SQLiteDatabase db = helper.getReadableDatabase();
            // db.execSQL("delete from person where name=?", new Object[] { name });
            db.delete("person", "name=?", new String[] { name });
            db.close();
        }
    
        /**
         * 返回全部的数据库信息
         * 
         * @return
         */
        public List<Person> findAll() {
            List<Person> persons = new ArrayList<Person>();
            SQLiteDatabase db = helper.getReadableDatabase();
            // Cursor cursor = db.rawQuery("select * from person", null);
            Cursor cursor = db.query("person", new String[] { "name", "id",
                    "number" }, null, null, null, null, null);
            while (cursor.moveToNext()) {
                int id = cursor.getInt(cursor.getColumnIndex("id"));
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String number = cursor.getString(cursor.getColumnIndex("number"));
                Person person = new Person(id, name, number);
                persons.add(person);
            }
            cursor.close();
            db.close();
            return persons;
        }
    
    }

    两种数据库增删改查方式的优缺点
    1. 直接利用sql语句增删改查
    优点:非常的灵活,多表查询,级联查询。
    缺点:代码容易出错,方法没有返回值。

    2. 利用google包装的api 执行增删改查
    优点: 代码不容易出错,写起来简单,方法有返回值
    缺点: 不容易多表查询。复杂表的操作,视图都无法实现。

    运行代码后查看结果十分麻烦,下面介绍一种简单的方法

    SQLite3工具的使用

    cmd打开命令行

    输入“adb shell” 出现如下错误

    以为是模拟器没开的原因,但是打开模拟器后,还是一样的错误出现

    进入相应目录

    继续进入databases 目录

    输入如下命令:

    sqlite3 person.db

    执行一条sql语句如下:

  • 相关阅读:
    asking邱宝裕
    一文深度解读量化交易(下)
    一文深度解读量化交易(上)
    关于日内波段交易系统:一个期货高手的交易思路独白
    财务报表分析(张新民教授)-第一章笔记
    定增游戏(二)
    leetcode -- Restore IP Addresses
    leetcode -- Minimum Window Substring
    leetcode -- Maximal Rectangle TODO O(N)
    leetcode -- Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5565681.html
Copyright © 2011-2022 走看看