数据库操作 简单汇总

操作封装类

SQLiteDataBaseHelper.java

package com.wyj.db;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.util.Log;
//OPEN_READONLY :代表的是以只读方式打开数据库(常量值为:1)
//OPEN_READWRITE:代表以读写方式打开数据库(常量值为:0)
//CREATE_IF_NECESSARY:当数据库不存在时创建数据库
//NO_LOCALIZED_COLLATORS:打开数据库时,不根据本地化语言对数据库进行排序(常量值为:16)
//mDatabaseHelper.getWritableDatabase();不推荐作用,如果磁盘满了还是会继续写入会产生异常
//用到的权限
//向sdcard写入权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//在sdcard中创建与删除文件的权限<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
//注意数据库的可写权限!!!
//linux下的权限
//-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
//-rwxr-—r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
//-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
//drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
//Drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
//r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
//w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
//x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
//如果关闭执行权限,则表示字符会变成大写:
//-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf
//注意表名和库名的不同
//SQLiteDatabase有自带的insert、update、delete、query四个方法虽然方法,但不利于熟SQL语句。因为不封装

/**
 * 自己封装的数据库操作类
 *
 * @author 仲丛旭
 *
 */
public class SQLiteDataBaseHelper {
    /** 日志打印 */
    private static final String TAG = "SQLiteDataBaseHelper";
    /** 用于管理和操作SQLite数据库 */
    private SQLiteDatabase database = null;
    /** 由SQLiteOpenHelper继承过来,用于实现数据库的建立与更新 */
    private MySQLiteOpen mySQLiteOpen = null;
    // ================================
    /** SD卡的根目录 */
    private final String SDCARD_ROOT = Environment
            .getExternalStorageDirectory().getAbsolutePath();
    /** 打开默认数据库路径 */
    private final String PATH = SDCARD_ROOT + File.separator + "cms_db"
            + File.separator + "cms.db";
    // ==============================
    /** 要创建的数据库名字 */
    private static final String DB_NAME = "wyj.db";
    /** 数据库版本 */
    private static final int VERSION = 1;
    /** 创建表名 */
     private static final String SQL_CREATE_TABLE2 =
     "CREATE TABLE tb_words(_id INTEGER PRIMARY KEY AUTOINCREMENT , english , chinese)";
    private static final String SQL_CREATE_TABLE = "CREATE TABLE member_birthday(_id  integer primary key autoincrement not null, mid varchar, title varchar, birthday_time varchar ,type varchar, rtime varchar)";

    /**
     * 继承SQLiteOpenHelper类,在构造方法中分别需要传入Context,数据库名称,CursorFactory(一般传入null
     *
     * 为默认数据库),数据库版本号(不能为负数)。在SQLiteOpenHelper中首先执行的是onCreate方法
     *
     * 在构造函数时并没有真正创建数据库
     *
     * 而在调用getWritableDatabase或者getReadableDatabase方法时才真正去创建数据库
     *
     * 返回一个SQLiteDatabase对象。
     *
     * 数据存储到了data/data/应用包名/databases
     *
     * @author 仲丛旭
     *
     */
    private class MySQLiteOpen extends SQLiteOpenHelper {
        /**
         * 构造方法
         *
         * @param context
         * @param name
         * @param factory
         * @param version
         */
        public MySQLiteOpen(Context context, String name,
                CursorFactory factory, int version) {
            super(context, name, factory, version);
            Log.i(TAG, "==数据库路径"+PATH);
            Log.i(TAG, "==MySQLiteOpen()");
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.i(TAG, "==数据库没有表时创建一个");
            db.execSQL(SQL_CREATE_TABLE);
            db.execSQL(SQL_CREATE_TABLE2);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.i(TAG, "==升级数据库");
            if (newVersion > oldVersion) {
                db.execSQL("DROP TABLE IF EXISTS member_birthday");
                onCreate(db);
            }
        }

    }

    /**
     * 默认的构造方法自动去创建一个默认的数据库路径(SD卡的数据,需要到这个文来修改)
     */
    public SQLiteDataBaseHelper() {

        database = SQLiteDatabase.openDatabase(PATH, null,
                SQLiteDatabase.OPEN_READWRITE);
    }

    /**
     * 创建数据库,返回数据库对象
     *
     * @param context
     */
    public SQLiteDataBaseHelper(Context context, String name) {
        mySQLiteOpen = new MySQLiteOpen(context, DB_NAME, null, VERSION);
        database = mySQLiteOpen.getReadableDatabase();
        // database = mySQLiteOpen.getWritableDatabase();
    }

    /**
     * 创建数据库,返回数据库对象
     *
     * @param context
     */
    public SQLiteDataBaseHelper(Context context) {
        mySQLiteOpen = new MySQLiteOpen(context, DB_NAME, null, VERSION);
        database = mySQLiteOpen.getReadableDatabase();
        // database = mySQLiteOpen.getWritableDatabase();
    }

    /**
     * @作用 查询数据返回Cursor
     * @param sql
     * @param selectionArgs
     * @return
     */
    public Cursor selectCursor(String sql, String[] selectionArgs) {
        return database.rawQuery(sql, selectionArgs);
    }

    /**
     * @作用 执行带占位符的select语句,返回list集合
     * @param sql
     * @param selectionArgs
     * @return
     */
    public List<Map<String, String>> SelectData(String sql,
            String[] selectionArgs) {
        Cursor cursor = selectCursor(sql, selectionArgs);
        return cursorToList(cursor);
    }

    /**
     * @作用 已知一个cursor得到List集合
     * @param cursor
     * @return
     */
    private List<Map<String, String>> cursorToList(Cursor cursor) {
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        String[] arrColumnName = cursor.getColumnNames();
        while (cursor.moveToNext()) {
            Map<String, String> map = new HashMap<String, String>();
            for (int i = 0; i < arrColumnName.length; i++) {
                String cols_value = cursor.getString(i);
                map.put(arrColumnName[i], cols_value);
            }
            list.add(map);
        }
        if (cursor != null) {
            cursor.close();
        }
        return list;
    }

    /**
     * @作用 执行带占位符的update、insert、delete语句,更新数据库,返回true或false
     * @param sql
     * @param bindArgs
     *            问号中的参数值
     * @return boolean
     */
    public boolean updataData(String sql, Object[] bindArgs) {
        try {
            if (bindArgs == null) {
                database.execSQL(sql);
            } else {
                database.execSQL(sql, bindArgs);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * @作用 执行带占位符的select语句,返回结果集的个数。如果已经查询过了不推荐继续使用,占内存
     * @param sql
     * @param selectionArgs
     * @return int
     */
    public int selectCount(String sql, String[] selectionArgs) {
        Cursor cursor = database.rawQuery(sql, selectionArgs);
        int count = 0;
        if (cursor != null) {
            count = cursor.getCount();
            cursor.close();
        }
        return count;
    }

    /**
     * @作用 关闭数据库操作类
     */
    public void destroy() {
        if (mySQLiteOpen != null) {
            mySQLiteOpen.close();
            mySQLiteOpen = null;
        }
        if (database != null) {
            database.close();
            database = null;
        }
    }
}

自定义 数据类

package com.wyj.db_memberbirthday;

public class MemberBirthday {

    private String mid;// ID  //用户ID
    private String title;  //生日标题 或者姓名
    private String birthday_time;  // 生日时间
    private String type;   // 1 阴历  2 阳历
    private String rtime; //提醒时间

    public  MemberBirthday(String mid,String title, String birthday_time , String type ,String rtime){
        this.mid = mid;
        this.title = title;
        this.birthday_time =birthday_time;
        this.type = type;
        this.rtime = rtime;
    }
    public String getMid() {
        return mid;
    }
    public void setMid(String mid) {
        this.mid = mid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getBirthday_time() {
        return birthday_time;
    }
    public void setBirthday_time(String birthday_time) {
        this.birthday_time = birthday_time;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getRtime() {
        return rtime;
    }
    public void setRtime(String rtime) {
        this.rtime = rtime;
    }

}

操作数据类

package com.wyj.db_memberbirthday;

import java.util.List;
import java.util.Map;

import com.wyj.db.SQLiteDataBaseHelper;

import android.content.Context;
import android.util.Log;

public class MemberBirthday_model {

    private final String TAG = "MemberBirthday_model";
    /** 数据库操作 */
    SQLiteDataBaseHelper db;
    public MemberBirthday_model(Context context) {

        db = new SQLiteDataBaseHelper(context, "cms");

    }

    public boolean insert(MemberBirthday info) {

        String sql = "INSERT INTO member_birthday(mid,title,birthday_time,type,rtime) values (?,?,?,?,?)";
        boolean flag = db.updataData(sql, new String[] { info.getMid(), info.getTitle(),
                info.getBirthday_time(), info.getType(), info.getRtime() });

//        String sql = "INSERT INTO tb_words(english,chinese) values (?,?)";
//        boolean flag = db.updataData(sql, new String[] { "1111111","22222222"});

        Log.i(TAG, "生日插入返回flag==" + flag);
        return flag;
    }

    public boolean update(MemberBirthday info, String id) {

        String sql = "UPDATE member_birthday SET mid = ?,title = ?,birthday_time = ?,type = ?,rtime = ?  WHERE _id = ?";

        boolean flag = db.updataData(sql, new String[] { info.getMid(), info.getTitle(),
                info.getBirthday_time(), info.getType(), info.getRtime(), id });
        Log.i(TAG, "生日更新返回flag==" + flag);

        return flag;
    }

    public List<Map<String, String>> select( String id) {
        List<Map<String, String>> list=null;

        if(id.equals("")){
            String sql = "SELECT * FROM member_birthday ";
            list = db.SelectData(sql, null);
        }else{
            String sql = "SELECT * FROM member_birthday WHERE _id = ?";
            list = db.SelectData(sql, new String[]{id});
        }
        Log.i(TAG,"生日查询的值"+list.toString());

        return list;
    }

}

在 具体activity 中调用

MemberBirthday_model memberbirdaydb=new MemberBirthday_model(AddBirthday.this);

        //添加
        MemberBirthday memberbirdayinfo=new MemberBirthday(Cms.APP.getMemberId(),birthday_title,rdate,birthdaytype,rtime);
        boolean flag =memberbirdaydb.insert(memberbirdayinfo);

        //修改
//        MemberBirthday memberbirdayinfo=new MemberBirthday(Cms.APP.getMemberId(),birthday_title,rdate,birthdaytype,rtime);
//        boolean flag =memberbirdaydb.update(memberbirdayinfo,"1");
        if(flag){
            Utils.ShowToast(AddBirthday.this,
                    "成功!");
        }else{
            Utils.ShowToast(AddBirthday.this,
                    "失败!");
        } 
时间: 2024-10-05 06:10:04

数据库操作 简单汇总的相关文章

Mysql数据库操作简单版

1,简介 数据库,简而言之就是存储数据的仓库,可以按照一定的数据结构存储管理大量的数据及数据与数据之间的关系,它本质上是一种信息管理系统.数据库根据存储采用的数据结构的不同可以分为许多种,其中常见的有层次式数据库.网络式数据库.关系型数据库.其中关系型数据库占据着市场的主流. 关系型数据库是建立在关系模型基础上的数据库.这种定义听起来十分抽象,这里我们不深入讨论什么叫做"关系模型"--大学计算机专业专门有一门课叫"离散数学"专门讨论过关系模型 --,只是简单的表述为

selenium - mysqlclient数据库操作 - 简单demo

数据库如下: 直接上代码,如下: 1 import MySQLdb # 导入数据库包 2 3 conn = MySQLdb.connect( 4 host='fhdskhaf.aliyuncs.com', # 连接服务器 5 port=3306, # 端口号,默认3306的话可以省略这一行 6 user='zhangsan', # 用户名 7 passwd='fhdkasjf', # 密码 8 db='datav', # 数据库名 9 charset='utf8' # 编码方式(字符集) 10

java工具类--数据库操作封装类

java对数据库操作简单处理,如下代码即可,封装了 增删改查及获取连接.关闭连接. 代码如下: package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 操作数据库工具类 * * */ public class DbUtil { /** * 连接数据 * * @ret

mysql数据库很简单操作

进入linux系统 root   >/usr/bin/mysql -u root mysql>show databases;                    #查看数据库 mysql>use  testtable;                        #testtable 为所要查看的库,应用数据库 mysql>show tables;                          #查看所有表 mysql>desc abc_table          

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

MySQL数据库的简单操作

[一]JDBC驱动分类: 1:JDBC--ODBC 桥驱动. 在程序开发中不用此驱动类型,因为操作性能太低. 2:纯JDBC链接(JDBC本地驱动:本地协议纯JDBC驱动). 3:JDBC网络驱动. 4:数据库的操作过程: 〈1〉打开数据库的服务                    〈2〉连接数据库,连接的时候以表达都要输入用户名和密码. 〈3〉操作数据库:创建表, 查询表, 跟新纪录.   〈4〉数据库的操作:Statement,  PreparedStatement. 〈5〉数据库的查询:

linux操作mysql数据库常用简单步骤

连接mysql数据库: 主要看mysql安装在哪一个目录下: mysql -h主机地址 -u用户名 -p用户密码 或者mysql -h ip地址 -u  zaiai -p zaiai 或者/var/email/mysql/bim/mysql mysql数据库中sql修改字段类型 首先说明一下: 在mysql数据库中可以对表的字段类型进行修改的,这样的好处是正常情况下原来的数据不会丢失的. 它的语法规则是:alter table newexample modify id char(20); 这里详

Java连接MySQL数据库及简单操作代码

1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的MySQL-connector-java-5.0.5-bin.jar加到classpath里,具体如下: "我的电脑"-> "属性" -> "高级" -> "环境变量",在系统变量那里编辑clas

yii2 数据库操作汇总

//1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 &quo