首页 > 系统 > Android > 正文

Android代码本地写数据库

2019-11-09 17:31:00
字体:
来源:转载
供稿:网友

DBHelper:

package com.ruru.sqlitedemo;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by 27c1 on 2017/1/24. */public class DBHelper extends SQLiteOpenHelper {    PRivate static final String DB_NAME = "TJ_DDLX.DB";    private static final int DB_VERSION = 3;    public DBHelper(Context context) {        super(context, DB_NAME, null, DB_VERSION);    }    /**     * 建表(手机号和姓名)     */    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        sqLiteDatabase.execSQL("create table if not exists UserInfo(phone integer,name varchar(20))");    }    /**     * 版本更新     *     * @param sqLiteDatabase     * @param i-旧版本     * @param i1-新版本     */    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {        if (i < 3) {            sqLiteDatabase.execSQL("drop table UserInfo");        }        onCreate(sqLiteDatabase);    }}Android多线程下安全访问数据库--安全的数据库并发操作:

DatabaseManager:

package com.ruru.sqlitedemo;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import java.util.concurrent.atomic.AtomicInteger;/** * Created by 27c1 on 2017/2/3. * * Android多线程下安全访问数据库--安全的数据库并发操作 */public class DatabaseManager {    private AtomicInteger mOpenCounter = new AtomicInteger();    private static DatabaseManager instance;    private static SQLiteOpenHelper mDatabaseHelper;    private static SQLiteDatabase mDatabase;    public static synchronized void initializeInstance(SQLiteOpenHelper helper) {        if (instance == null) {            instance = new DatabaseManager();            mDatabaseHelper = helper;        }    }    public static synchronized DatabaseManager getInstance() {        if (instance == null) {            throw new IllegalStateException(DatabaseManager.class.getSimpleName() + " is not initialized, call initializeInstance(..) method first.");        }        return instance;    }    public synchronized SQLiteDatabase openDatabase() {        if (mOpenCounter.incrementAndGet() == 1) {            // Opening new database            mDatabase = mDatabaseHelper.getWritableDatabase();        }        return mDatabase;    }    public synchronized void closeDatabase() {        if (mOpenCounter.decrementAndGet() == 0) {            // Closing database            mDatabase.close();        }    }}UserInfoDao:

package com.ruru.sqlitedemo;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;/** * Created by 27c1 on 2017/2/3. */public class UserInfoDao {    private static final String TAG = "info";    private final DBHelper helper;    private String tableName = "UserInfo";    /**     * 初始化数据库     */    public UserInfoDao(Context context) {        helper = new DBHelper(context.getapplicationContext());        DatabaseManager.initializeInstance(helper);    }    /**     * 查询数据库中的数据     */    public int query() {        String sql = "SELECT * FROM" + tableName;        //打开数据库        SQLiteDatabase database = DatabaseManager.getInstance().openDatabase();        Cursor result = null;        int count = 0;        //Ctrl+Alt+t快捷键        try {            result = database.rawQuery(sql, null);            count = result.getCount();//数据库中的数据        } catch (Exception e) {            e.printStackTrace();        } finally {            if (result != null) {                result.close();            }            DatabaseManager.getInstance().closeDatabase();        }        return count;    }    /**     * 数据库中插入数据     */    public int insert(UserBean userBean) {        //公共的        SQLiteDatabase database = DatabaseManager.getInstance().openDatabase();        int checks = 0;        Cursor result = null;        //第一种方法//        ContentValues values = new ContentValues();//        //key为表的属性,value为属性的值//        values.put("phone", userBean.getPhone());//        values.put("name", userBean.getName());//        try {//            database.insert(tableName, null, values);//            //下面的这三行还不能去掉,否则数据没有添加成功//            result = database.rawQuery("select last_insert_rowid()", null);//            checks = result.getCount();//            Log.i(TAG, "insert: checks===++++++++++" + checks);//        } catch (Exception e) {//            e.printStackTrace();//        } finally {//            DatabaseManager.getInstance().closeDatabase();//        }        //第二种方法        try {            Log.i(TAG, "insert: "+"开始AAA");            String sql = "insert into " + tableName + " (phone,name) Values(?,?)";            Object args[] = new Object[]{userBean.getPhone(),userBean.getName()};            database.execSQL(sql, args);            //下面的这三行还不能去掉,否则数据没有添加成功            result = database.rawQuery("select last_insert_rowid()", null);            checks = result.getCount();            Log.i(TAG, "insert: checks==="+checks);        } catch (Exception ex) {            Log.v("exception", ex.getMessage());        } finally {            if (result != null) {                result.close();            }            DatabaseManager.getInstance().closeDatabase();        }        //公共的        return checks;    }}UserBean:

package com.ruru.sqlitedemo;/** * Created by 27c1 on 2017/2/3. */public class UserBean {    private int phone;    private String name;    public UserBean() {    }    public int getPhone() {        return phone;    }    public void setPhone(int phone) {        this.phone = phone;    }    public UserBean(int phone, String name) {        this.phone = phone;        this.name = name;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "UserBean{" +                "phone=" + phone +                ", name='" + name + '/'' +                '}';    }}MainActiivty:

package com.ruru.sqlitedemo;/** * Created by 27c1 on 2017/2/3. */public class UserBean {    private int phone;    private String name;    public UserBean() {    }    public int getPhone() {        return phone;    }    public void setPhone(int phone) {        this.phone = phone;    }    public UserBean(int phone, String name) {        this.phone = phone;        this.name = name;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "UserBean{" +                "phone=" + phone +                ", name='" + name + '/'' +                '}';    }}

相关网址:

Android Database 并行访问

Android中给数据库表中添加数据

Android开发之利用SQLite进行数据存储

Android studio中调出快捷键,快速try catch包括代码块

数据库int类型字段长度的含义


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表