花了两天的时间完成了一个简单的小程序:服务器端从数据库封装json 数据,客户端解析json数据后用listview 显示,现在做一个简单的梳理。
一、服务器端从数据库中获取数据后封装成json数据:(服务器端编程)
连接数据库的过程就不上代码了,基本过程为:
加入数据库的驱动——>DriverManager.getConnection()——>封装sql语句在perparedStatement对象中(具体看具体实例的要求,可以查看api)——>执行perparedSatatement对象,返回ResultSet对象。
1.使用Java 反射机制将获得ResultSet数据放进List<T>,其中T是封装数据的类,放一个主要操作的代码:
这一条是根据我的需求写的,查询单条或增删操作也可以仿照这里,写齐了就是不错的数据库操作的工具类。
//泛型编程,通过反射机制查询多条数据
public <T> List<T> FindMoreData2(String sql,List<Object> params,Class<T> cls)throws Exception{
List<T> list=new ArrayList<T>();
ptmt=conn.prepareStatement(sql);
int index=1;
if(params!=null&&!params.isEmpty()){
for(int i=0;i<params.size();i++){
ptmt.setObject(index++,params.get(i));
}
}
resultSet=ptmt.executeQuery();
ResultSetMetaData rData=resultSet.getMetaData();
int col_num=rData.getColumnCount();
while(resultSet.next()){
T resultObject=cls.newInstance();
for(int i=1;i<col_num;i++){
String col_name=rData.getColumnName(i+1);
Object col_value=resultSet.getObject(col_name);
if(col_value==null) col_value="";
<span style="color:#ff0000;">Field field=cls.getDeclaredField(col_name);//根据类名找到domain 类 中的属性
field.setAccessible(true);
field.set(resultObject, col_value);</span>
}
list.add(resultObject);
}
return list;
}
2.反射机制注意要写一个可序列化的封装类,数据库表中的列名与成员变量相对应,这样方便进行封装操作。我使用的数据库中表如下,数据比较粗糙。