`

sqlite数据处理工具

 
阅读更多

1,在定义变量名称时,使用实体属性和数据库列名一致,方便后续处理

2,工具类通过java反射技术编写

3,在使用数据库操作,查询时Cursor封装实体属性值,修改时实体对象转换为ContentValues

4,方法中提供两种方式转换,使用public 属性,private 属性 通过getset方法使值对象话

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;

import android.content.ContentValues;
import android.database.Cursor;
/**
 * 
 *@date 2015-7-8 
 *@author zhengshijun
 *
 */
public class SqliteUtils 
{
	public static <T> T cursorToEntity(Cursor cursor,Class<T> classEntity) throws InstantiationException, IllegalAccessException{
		T o = null;
		o = classEntity.newInstance();
		Class<?> entity = o.getClass();
		Field[] fields = entity.getFields();
		for(Field field:fields){
			if(Modifier.isStatic(field.getModifiers()))continue;
			String name = field.getName();
			int index = cursor.getColumnIndex(name);
			if(index==-1)continue;
			Class<?> type = field.getType();
			if(type == String.class){
				field.set(o, cursor.getString(index));
			}else if(type == Integer.class||type==int.class){
				field.setInt(o, cursor.getInt(index));
			}else if(type == Double.class||type == double.class ){
				field.setDouble(o, cursor.getDouble(index));
			}else if(type == Float.class|| type==float.class){
				field.setFloat(o, cursor.getFloat(index));
			}else if(type == Long.class||type == long.class){
			    field.setLong(o, cursor.getLong(index));
			}
		}
		
		return o;
		
	}
	public static ContentValues entityToValues(Serializable entity) throws IllegalArgumentException, IllegalAccessException{
		ContentValues values =null;
		if(entity!=null){
			values = new ContentValues();
			Class<?> classEntity = entity.getClass();
			Field[] fields =classEntity.getFields();
			for(Field field:fields){
				if(Modifier.isStatic(field.getModifiers()))continue;
				String name = field.getName();
				Class<?> type = field.getType();
				if(type == String.class){
					Object value = field.get(entity);
					if(value==null)continue;
					values.put(name, value.toString());
				}else if(type == Integer.class||type==int.class){
					Integer value = field.getInt(entity);
					if(value==null)continue;
					values.put(name, value);
				}else if(type == Double.class||type == double.class ){
					Double value = field.getDouble(entity);
					if(value==null)continue;
					values.put(name, value);
				}else if(type == Float.class|| type==float.class){
					Float value = field.getFloat(entity);
					if(value==null)continue;
					values.put(name, value);
				}else if(type == Long.class||type == long.class){
					Long value = field.getLong(entity);
					if(value==null)continue;
					values.put(name, value);
				}
				
			}
		}
		
		return values;
	}
	
	public static <T> T cursorToEntity2(Cursor cursor,Class<T> classEntity) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
		T o = null;
		o = classEntity.newInstance();
		Class<?> entity = o.getClass();
		Method methods[] = entity.getMethods();
		for(Method method:methods){
			if(Modifier.isStatic(method.getModifiers()))continue;
			String methodName = method.getName();
			if(methodName.startsWith("set")){
				Type types[] = method.getGenericParameterTypes();
				if(method.getGenericReturnType().equals(void.class)&&types.length==1){
					String name = Character.toLowerCase(methodName.charAt(3))+methodName.substring(4);
					int index = cursor.getColumnIndex(name);
					if(index==-1)continue;
					Type type = types[0];
					if(type == String.class){
						method.invoke(o, cursor.getString(index));
					}else if(type == Integer.class||type==int.class){
						method.invoke(o, cursor.getInt(index));
					}else if(type == Double.class||type == double.class ){
						method.invoke(o, cursor.getDouble(index));
					}else if(type == Float.class|| type==float.class){
						method.invoke(o, cursor.getFloat(index));
					}else if(type == Long.class||type == long.class){
						method.invoke(o, cursor.getLong(index));
					}else if(type==java.util.Date.class){
						
					}else if(type ==java.sql.Date.class){
					 
					}
					
				}
			}
			
		}
		return o;
	}
	public static ContentValues entityToValues2(Serializable entity) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
		ContentValues values =null;
		if(entity!=null){
			values = new ContentValues();
			Class<?> classEntity = entity.getClass();
			Method methods[] = classEntity.getMethods();
			for(Method method:methods){
				if(Modifier.isStatic(method.getModifiers()))continue;
				String methodName = method.getName();
				if(methodName.startsWith("get")){
					Type types[] = method.getGenericParameterTypes();
					Type type = method.getReturnType();
					if(types.length==0&&!type.equals(void.class)){
						String name = Character.toLowerCase(methodName.charAt(3))+methodName.substring(4);
						if(type == String.class){
							Object value =method.invoke(entity);
							if(value==null)continue;
							values.put(name, value.toString());
						}else if(type == Integer.class||type==int.class){
							Integer value = (Integer) method.invoke(entity);
							if(value==null)continue;
							values.put(name, value);
						}else if(type == Double.class||type == double.class ){
							Double value = (Double) method.invoke(entity);
							if(value==null)continue;
							values.put(name, value);
						}else if(type == Float.class|| type==float.class){
							Float value = (Float) method.invoke(entity);
							if(value==null)continue;
							values.put(name, value);
						}else if(type == Long.class||type == long.class){
							Long value = (Long) method.invoke(entity);
							if(value==null)continue;
							values.put(name, value);
						}
					}
				}
			}
		}
		return values;
		
	}
	
}

 

 

分享到:
评论

相关推荐

    SQLite可视化工具

    "SQLite可视化工具"指的是用于管理和操作SQLite数据库的图形用户界面(GUI)应用,这些工具为用户提供了一种直观的方式,以进行数据查询、编辑、创建表和视图以及执行其他数据库管理任务,而无需编写SQL命令行。...

    SQLite数据管理工具

    SQLite数据管理工具则为用户提供了方便的界面来操作和管理SQLite数据库,使得数据库的创建、查询、更新和删除等操作更为便捷。 SQLite数据库的核心特性包括: 1. **跨平台性**:SQLite支持多种操作系统,如Windows...

    sqlite数据导入工具

    "SQLite数据导入工具"是为了帮助用户方便地将数据批量导入到SQLite数据库中而设计的实用程序。这样的工具通常支持多种数据格式,如CSV、Excel、XML或者JSON,以便于从不同来源的数据源进行迁移或整合。通过使用这类...

    SQLite数据库 加密解密工具

    在处理敏感数据时,为了保护信息安全,对SQLite数据库进行加密是必要的步骤。本文将详细介绍如何使用.NET环境下的SQLite加密解密工具来确保数据库的安全。 首先,SQLite数据库的加密通常涉及到两方面的技术:透明...

    android sqlite可视化工具

    总之,使用“android sqlite可视化工具”如SQLite Expert,能极大地提升Android开发中对SQLite数据库的管理和维护效率,使得非SQL专家的开发者也能轻松处理数据库相关任务。同时,这类工具通常具有良好的用户界面和...

    SQLite网络化工具包

    这种工具包在许多需要分布式数据存储和处理的场景中非常有用,比如物联网(IoT)设备、移动应用、小型服务器以及任何无法或不便使用大型数据库系统的环境。 SQLite是一款轻量级的关系型数据库管理系统,以其小巧、...

    Sqlite数据文件查看工具sqlitebrowser

    总之,SQLiteBrowser作为一款强大的SQLite数据库管理工具,能够帮助用户在不熟悉SQL语法的情况下也能有效地处理SQLite数据文件,它提供了丰富的功能,满足了从简单的查看到复杂的数据库操作的各种需求。对于那些需要...

    sqlite3数据库查看工具

    SQLite3是一种轻量级、开源的嵌入式SQL数据库引擎,广泛应用于移动设备、桌面应用以及服务器环境,尤其适合处理小到中等规模的数据存储需求。它的设计目标是实现零配置、事务支持、完整的SQL语法以及自包含性,使得...

    sqlite可视化工具

    5. **事务处理**:支持开始、提交和回滚事务,确保数据的一致性和完整性。 6. **权限管理**:可以设置用户角色和权限,控制不同用户对数据库的操作范围。 7. **插件扩展**:sqliteStudio允许开发和安装插件,以...

    Android SQLite学习工具

    这篇博客“Android SQLite学习工具”可能详细介绍了如何在Android环境中使用SQLite进行数据操作,并提供了一个实用的SQLite管理工具——sqlite3.exe。 SQLite数据库在Android中的应用主要包括创建数据库、创建表、...

    sqlite 3.8.1命令行工具

    此外,新的优化器改进使得查询处理更快,尤其是对于大型数据集。 总之,sqlite3.exe作为SQLite的命令行工具,为开发者和数据库管理员提供了一个直接、高效的途径来操作SQLite数据库。无论是在开发阶段还是在生产...

    SqLite数据库操作工具

    SQLite数据库操作工具使得用户能够方便地管理和操作SQLite数据库,进行数据的增删改查等操作,而无需深入了解复杂的SQL语法或数据库管理系统。 SQLite Studio是一款非常实用的SQLite数据库管理工具,它提供了一个...

    SQL Server数据导入SQLite工具

    当我们需要在两者之间进行数据迁移时,就需要借助特定的工具来完成,比如"SQL Server数据导入SQLite工具"。 这个工具的主要功能是将SQL Server数据库转换为SQLite数据库,这对于开发者和数据管理人员来说非常实用。...

    两款 sqlite可视化工具

    在处理小型到中型的数据存储时,SQLite是一个高效且可靠的解决方案。为了更方便地管理和操作SQLite数据库,这里我们将介绍两款实用的SQLite可视化工具——DB Browser for SQLite(也称为SQLiteStudio)和SQLite ...

    sqlite打开工具.zip

    4. **导入/导出数据**:工具可能支持将数据导入到SQLite数据库,或者将数据库内容导出为CSV或其他格式。 5. **备份与恢复**:可以方便地对数据库进行备份,防止数据丢失,并支持从备份文件恢复。 6. **权限管理**:...

    Sqlite3和管理工具

    通过优化的查询计划和索引机制,SQLite3能高效地处理大量数据。 6. **数据库大小限制**:SQLite3理论上可以支持高达140TB的数据库大小,足以应对大多数应用场景。 7. **安全性**:SQLite3提供了加密选项,允许对...

    SQLite可视化工具.zip

    在Python编程环境中,SQLite被广泛应用于数据存储,尤其适合小规模的数据处理和开发项目。为了更方便地操作SQLite数据库,通常我们会借助一些可视化工具,例如SQLite Studio,这就是"SQLite可视化工具.zip"提供的...

    Sqlite可视化工具(免安装)

    7. **事务处理**:支持事务的开始、提交和回滚,确保数据的一致性。 8. **备份与恢复**:可以导出数据库为SQL脚本或者备份数据库文件,方便数据的备份和迁移。 9. **数据导入导出**:支持将数据导入或导出到CSV、...

    sqlite数据库管理工具

    用户还可以批量编辑和导入/导出数据,提高数据处理效率。 4. **查询构建器**:提供一个可视化查询构建器,通过拖拽表和字段,生成复杂的SQL语句,减少了编写错误的可能性。 5. **备份与恢复**:支持数据库的备份和...

    SQLite数据库管理工具(SQLiteStudio) v3.1.1 windows,mac,linux版集合

    8. **编码支持**:SQLiteStudio支持多种字符集,包括UTF-8,确保在处理不同语言和国际化数据时的兼容性。 9. **安全性**:用户可以设置数据库权限,保护敏感数据。此外,SQLite本身支持加密,通过SQLiteStudio可以...

Global site tag (gtag.js) - Google Analytics