# sql **Repository Path**: yyf0502/sql ## Basic Information - **Project Name**: sql - **Description**: AutoSQLite 是一个基于 SQLite 的 Android 数据库管理工具,简化了数据库操作。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-30 - **Last Updated**: 2025-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android, Sqlite, 移动端, 数据库, auto ## README # AutoSQLite 使用说明 ## 简介 AutoSQLite 是一个基于 SQLite 的 Android 数据库管理工具,简化了数据库操作。 ## 主要功能 - **基础数据库操作**:提供增、删、改、查等基本操作。 - **批量插入**:支持事务,提高数据插入效率。 - **分页查询**:支持 offset 和 limit 分页。 - **自动映射**:基于 Java 反射,将对象映射到数据库表。 - **支持索引、外键**:自动创建索引和外键。 - **模糊查询**:支持 LIKE 关键字进行模糊匹配。 ## 代码结构 ### `BaseDao` 通用数据库操作基类,提供增删改查功能。 #### 主要方法 - `long insert(T entity)`: 插入单条数据。 - `void insertBatch(List entities)`: 批量插入数据。 - `int update(T entity, String whereClause, String[] whereArgs)`: 更新数据。 - `int delete(String whereClause, String[] whereArgs)`: 删除数据。 - `List query(String selection, String[] selectionArgs, String orderBy)`: 查询数据。 - `List queryPage(String selection, String[] selectionArgs, String orderBy, int offset, int limit)`: 分页查询。 - `long count(String selection, String[] selectionArgs)`: 统计数据条数。 - `List rawQuery(String sql, String[] selectionArgs)`: 执行 SQL 查询。 - `void execSQL(String sql, Object[] bindArgs)`: 执行 SQL 语句。 ### `DatabaseManager` 数据库管理类,提供数据库实例获取与管理。 #### 主要方法 - `static synchronized DatabaseManager getInstance(Context context, List> entityClasses)`: 获取单例数据库管理对象。 - ` BaseDao getDao(Class entityClass)`: 获取对应表的 DAO 对象。 - `void close()`: 关闭数据库连接。 ### `SQLiteHelper` 数据库辅助类,负责数据库创建、升级等操作。 #### 主要方法 - `onCreate(SQLiteDatabase db)`: 创建表、索引、外键。 - `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`: 处理数据库升级。 ## 使用示例 ### 1. 定义实体类 ```java import com.example.autosqlite.annotation.Column; import com.example.autosqlite.annotation.Table; @Table(name = "users") public class User { @Column(name = "id", primaryKey = true, autoIncrement = true) private int id; @Column(name = "name", notNull = true) private String name; @Column(name = "age") private int age; // 省略 getter 和 setter } ``` ### 2. 初始化数据库 ```java List> entities = Arrays.asList(User.class); DatabaseManager dbManager = DatabaseManager.getInstance(context, entities); ``` ### 3. 插入数据 ```java User user = new User(); user.setName("张三"); user.setAge(25); BaseDao userDao = dbManager.getDao(User.class); userDao.insert(user); ``` ### 4. 查询数据 ```java List users = userDao.query(null, null, "age ASC"); ``` ### 5. 模糊查询数据 ```java List users = userDao.query("name LIKE ?", new String[]{"%张%"}, "age ASC"); ``` ### 6. 更新数据 ```java User userToUpdate = users.get(0); userToUpdate.setAge(30); userDao.update(userToUpdate, "id = ?", new String[]{String.valueOf(userToUpdate.getId())}); ``` ### 7. 删除数据 ```java userDao.delete("id = ?", new String[]{"1"}); ``` ## 结论 AutoSQLite 通过注解与反射技术,减少了手动编写 SQL 语句的负担,适用于 Android 应用的数据管理。