SQL工具类

本文详细介绍了SQL工具类的使用方法,包括如何执行查询、更新操作,以及常见的一些实用功能,帮助开发者更高效地进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDbAdapter {

    // 数据库名称
    public final static String DB_NAME = "Book.db";

    // 数据库版本
    private static final int DB_VERSION =3;

    //数据表名
    private static final String Table_Name ="Book";

    //创建数据库表信息
    public  static final String CREATE_BOOK="create table Book ("
            +"id integer primary key autoincrement, "
            +"author text, "
            +"pages integer, "
            +"name text)";

    // 本地Context对象
    private Context mContext = null;

    // 执行open()打开数据库时,保存返回的数据库对象
    private SQLiteDatabase mSQLiteDatabase = null;

    // 由SQLiteOpenHelper继承过来
    private DatabaseHelper mDatabaseHelper = null;

     //内部类   ////////////////////////////////////////////////////////////////////////////////////
    private static class DatabaseHelper extends SQLiteOpenHelper {
    /* 构造函数-创建一个数据库 */
     DatabaseHelper(Context context) {
        // 当调用getWritableDatabase()
        // 或 getReadableDatabase()方法时
        // 则创建一个数据库
        super(context, DB_NAME, null, DB_VERSION);
    }

    /* 创建一个表 */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 数据库没有表时创建一个
        db.execSQL(CREATE_BOOK);

    }

    /* 升级数据库 */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS Book");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    /* 构造函数-取得Context */
    public MyDbAdapter(Context context) {
        mContext = context;
    }

    // 打开数据库,返回数据库对象
    public void open() throws SQLException {
        mDatabaseHelper = new DatabaseHelper(mContext);
        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();//从真正意义上创建数据库
    }

    // 关闭数据库
    public void close() {
        mDatabaseHelper.close();
    }

    /* 插入一条数据 */
    public long insertData(String name,String author, int pages) {

        ContentValues initialValues = new ContentValues();
        initialValues.put("name", name);
        initialValues.put("author", author);
        initialValues.put("pages", pages);
        return mSQLiteDatabase.insert(Table_Name, null, initialValues);
    }

    /* 删除一条数据 */
    public boolean deleteData(String name) {
        // sql="delete from tab_user where id='"+rowId+"'";
        //mSQLiteDatabase.execSQL(sql);
        return mSQLiteDatabase.delete(Table_Name, "name" + "='" + name+"'", null) > 0;
    }

   // 通过Cursor查询所有数据
   public Cursor fetchAllData() {
       return mSQLiteDatabase.query(Table_Name, new String[] { "name", "author", "pages" },
               null, null, null, null, null);
   }
   //db.query("person", new String[]{"personid,name,age"}, "name like ?", new String[]{"%ljq%"}, null, null, "personid desc", "1,2");
   //通过Cursor查询包含某个字的数据
    //查询姓名Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%林计钦%", "4"});
    public Cursor fetchDataName(String key,String value)  {

        Cursor mCursor =
                //mSQLiteDatabase.query("tab_persons", new String[]{"name"}, "name like ?", new String[]{"%name0%"}, null, null, "personid desc", "1,2");
                mSQLiteDatabase.query( Table_Name, new String[] { "name", "author", "pages" }, key + " like "+"'"+"%" +value+"%"+"'",null, null, null, null, null);
        
        return mCursor;

    }
    /* 用key(表中类型)查询指定数据 */
    public Cursor fetchData(String key,String value)  {

        Cursor mCursor =
                mSQLiteDatabase.query( Table_Name, new String[] {  "name", "author", "pages" }, key + "='" + value+"'", null, null, null, null, null);

        //if (mCursor != null) {
        ///    mCursor.moveToFirst();
        //}
        return mCursor;

    }

    /* 更新一条数据 */
    public boolean updateData( String name,String new_name,String author, int pages) {
        ContentValues contentValue = new ContentValues();
        contentValue.put("name", new_name);
        contentValue.put("author", author);
        contentValue.put("pages", pages);
        return mSQLiteDatabase.update(Table_Name, contentValue, "name" + "='" + name+"'",null) > 0;
    }

    /* 删除一个表 */
    public void deleteTable()
    {
        mSQLiteDatabase.execSQL("DROP TABLE " + Table_Name);
    }
}

 使用方法:

 private MyDbAdapter myDbAdapter =new MyDbAdapter(this) ; 
 myDbAdapter.open();
 myDbAdapter.insertData("爱情跑跑跑","王大锤",67);

 Cursor cursor=myDbAdapter.fetchDataName("author","王");
 String string =getAllData(cursor);
 data.setText(string);
 cursor.close();
 myDbAdapter.close();
private  String getAllData(Cursor cursor){
   String string="";
   if(cursor.getCount()!=0) {
       Log.d("log",String.valueOf(cursor.getCount()));
       int count = cursor.getCount();
       cursor.moveToFirst();
       do {
           string = string + cursor.getString(cursor.getColumnIndex("name"))+"  ";
           string = string + cursor.getString(cursor.getColumnIndex("author"))+"  ";
           string = string + cursor.getString(cursor.getColumnIndex("pages"))+"\n";
       }while(cursor.moveToNext());
   }
    return string;
}
package com.hexiang.utils; /** * SQLUtils utils = new SQLUtils(User.class); utils.setWhereStr("", "id", "=", 100).setWhereStr("and", "name", " ", "is null").setWhereStr("and", "date", ">=", new Date()); utils.setOrderByStr("id", "desc").setOrderByStr("name", "asc"); System.out.println(utils.buildSelectSQL()); System.out.println(utils.buildCountSQL()); */ import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class SqlUtils { private String beanName; private String beanShortName; private Map propertyMap; private List conditionList; private List relationList; private Map orderByMap; public SqlUtils(Class instance) { this.setBeanName(instance.getSimpleName()); this.setBeanShortName(Character.toLowerCase(this.getBeanName() .charAt(0)) + ""); init(); } public SqlUtils() { init(); } void init(){ propertyMap = new LinkedHashMap(); conditionList = new LinkedList(); relationList = new LinkedList(); orderByMap = new LinkedHashMap(); } /** * 添加查询条件 * * @param relation * 关联 "and","or"等 * @param property * 查询的对象属性 * @param condition * 查询的条件,关系符 * @param value * 查询的值 */ public SqlUtils setWhereStr(String relation, String property, String condition, Object value) { if(value != null){ relationList.add(relation); propertyMap.put(property, value); conditionList.add(condition); } return this; } private String buildWhereStr() { StringBuffer buffer = new StringBuffer(); if (!propertyMap.isEmpty() && propertyMap.size() > 0) { buffer.append("WHERE 1 = 1 "); int index = 0; for (String property : propertyMap.keySet()) { if (property != null && !property.equals("")) { buffer.append(r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值