Android之Sqlite数据库

数据库访问完毕后,游标必须也记得关闭

import com.huangzhong.love_power_model.UserInfoDto;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class UserInfoDao{

    private static final int MODE_PRIVATE = 0x0;
    private static final String DATABASE = "lovepower";
    private static SQLiteDatabase db;

    public static void insert(Context context,UserInfoDto model) {
        //Id,UserName,Birthday,PhoneNumber,QQ,Address,CreateDate
        Cursor cursor;
        int count = 0;
        try {
             db = context.openOrCreateDatabase(DATABASE, MODE_PRIVATE, null);
             //db.execSQL("drop table UserInfo ;");
             String sqlCheckExsit = "select count(*) as c from Sqlite_master  where type =‘table‘ and name =‘UserInfo‘ ";
             cursor = db.rawQuery(sqlCheckExsit, null);   

             if(cursor.moveToNext()){
                     count = cursor.getInt(0);
                     if(count <= 0){
                             db.execSQL("Create table UserInfo (Id text not null,UserName text,Birthday text,PhoneNumber text,QQ text,Address text,CreateDate text);");
                             Log.e("insertSql", "2222");
                     }
             }
             String insertSql = "insert into UserInfo (Id,UserName,Birthday,PhoneNumber,QQ,Address,CreateDate) " +
                        "values(‘" + model.getId() + "‘, ‘"
                        + model.getUserName()+"‘,‘"
                        + model.getBirthday()+"‘,‘"
                        + model.getPhoneNumber()+"‘,‘"
                        + model.getQQ()+"‘,‘"
                        + model.getAddress()+"‘,‘"
                        + model.getCreateDate() + "‘);";
                db.execSQL(insertSql);
                cursor.close();
            Log.e("insertSql", "ok");
        }
        finally {

            db.close();
        }
    }

    /**
     * 查询
     * @param context 上下文
     * @param sql       SQl查询语句
     * @param fields  字段名集合
     * @return    查询结果集 List<String>类型
     */
    public static List<UserInfoDto> query(Context context, String sql) {
        Log.e("UserInfoDto", "取数据");
        List<UserInfoDto> dataList = new ArrayList<UserInfoDto>();
        Cursor cursor;//Id,UserName,Birthday,PhoneNumber,QQ,Address,CreateDate
        try {
            db = context.openOrCreateDatabase(DATABASE, MODE_PRIVATE, null);
            cursor = db.rawQuery(sql, null);
            if (cursor != null) {
                while (cursor.moveToNext()) {
                    UserInfoDto model =new UserInfoDto();
                    model.setId(cursor.getString(cursor.getColumnIndex("Id")));
                    model.setUserName(cursor.getString(cursor.getColumnIndex("UserName")));
                    model.setBirthday(cursor.getString(cursor.getColumnIndex("Birthday")));
                    model.setPhoneNumber(cursor.getString(cursor.getColumnIndex("PhoneNumber")));
                    model.setQQ(cursor.getString(cursor.getColumnIndex("QQ")));
                    model.setAddress(cursor.getString(cursor.getColumnIndex("Address")));
                    model.setCreateDate(cursor.getString(cursor.getColumnIndex("CreateDate")));
                    dataList.add(model);
                }
                cursor.close();//游标必须关闭
            }
        }catch(Exception e) {
            new AlertDialog.Builder(context).setIcon(android.R.drawable.ic_dialog_alert).setTitle("数据库连接错误:")
            .setMessage("数据访问异常。").show();
        } finally {
            db.close();
        }
        return dataList;
    }

    /**
     * 数据记录总条数
     * @param context 上下文
     * @param sql      SQL查询语句
     * @return          记录条数
     */
    public static int getCount(Context context, String sql) {

        int totalCounty = 0;
        try {
            db = context.openOrCreateDatabase(DATABASE, MODE_PRIVATE, null);
            Cursor cursor = db.rawQuery(sql, null);
            cursor.moveToFirst();
            totalCounty = cursor.getInt(0);
            cursor.close();//游标必须关闭
        } catch (Exception e) {
            new AlertDialog.Builder(context)
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setTitle("数据库连接错误:").setMessage("数据访问异常。").show();
        } finally {
            db.close();
        }
        return totalCounty;
    }
}

数据访问层

public class UserInfoDto {
    //Id,UserName,Birthday,PhoneNumber,QQ,Address,CreateDate
    private String Id;
    private String UserName;
    private String Birthday;
    private String PhoneNumber;
    private String QQ;
    private String Address;
    private String CreateDate;
    public String getId() {
        return Id;
    }
    public void setId(String id) {
        Id = id;
    }
    public String getUserName() {
        return UserName;
    }
    public void setUserName(String userName) {
        UserName = userName;
    }
    public String getBirthday() {
        return Birthday;
    }
    public void setBirthday(String birthday) {
        Birthday = birthday;
    }
    public String getPhoneNumber() {
        return PhoneNumber;
    }
    public void setPhoneNumber(String phoneNumber) {
        PhoneNumber = phoneNumber;
    }
    public String getQQ() {
        return QQ;
    }
    public void setQQ(String qQ) {
        QQ = qQ;
    }
    public String getAddress() {
        return Address;
    }
    public void setAddress(String address) {
        Address = address;
    }
    public String getCreateDate() {
        return CreateDate;
    }
    public void setCreateDate(String createDate) {
        CreateDate = createDate;
    }
}

实体层

时间: 2024-10-25 10:54:29

Android之Sqlite数据库的相关文章

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Android实现SQLite数据库的增、删、改、查的操作

核心代码DAO类 package com.examp.use_SQLite.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

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

android操作sqlite数据库及心得

写这篇文章主要是网上的对sqlite的操作太多且太杂,很多时候都不能很好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来,一开始用的是preferences,后来要保存的东西多了,发现用preferences明显不能满足要求了,而且发现用这个的话代码就变得有点乱了,所以才开始学习使用sqlite数据库,一开始以为不就是个数据库么,和平时的mysql啊或者是sqlserver都一样,都很简单的,但后来真正在用的时候才发现困难

android在sqlite数据库的SQLiteOpenHelper中的onUpgrade里判断表是否存在

private boolean tabbleIsExist(String tableName, SQLiteDatabase db) { LogUtils.d("DatabaseHelper", "checking tabbleIsExist " + tableName); boolean result = false; if (tableName == null) { return false; } Cursor cursor = null; try { Stri

Qt for Android 打包 SQLite 数据库

Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面了, QT在打包apk的时候会自动打包这个目录里面的东西进去的  本文用菊子曰发布

android greenDao SQLite数据库操作工具类使用

上一篇介绍了如何建立类生成工程,现在介绍如何使用. 以下是ExampleDaoGenerator工程代码,做了一些修改 /* * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com

【转】Android使用SQLite数据库版本升级

Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1.v1.0(直接安装v1.0) 二.软件v2.0 有2种安装软件情况: 1.v1.0   -->  v2.0              不走onCreate,走onUpgrade 2.v2.0(直接安装v2.0)          走onCrea

android中sqlite数据库的基本使用和添加多张表

看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大家如何在sqlite数据库中建立多张表. 首先是如何建立数据库和表: 建立一个类继承SQLiteOpenHelper,即: public class ReaderOpenHelper extends SQLiteOpenHelper 然后添加构造方法: public ReaderOpenHelper

android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,