java 查询sql语句_java执行SQL语句实现查询的通用方法详解

完成sql查询 并将查询结果放入vector容器,以便其他程序使用

/*

* 执行sql查询语句

*/

public static vector executequery(class clazz, string sql, object... args) {

connection conn = null;

preparedstatement preparedstatement = null;

resultset rs = null;

vector vecrs = new vector();

t obj = null;

try {

conn = jdbctools.getconnection();

preparedstatement = conn.preparestatement(sql);

// 通过sql语句来判断选择了那些列

for (int i = 0; i < args.length; i++) {

preparedstatement.setobject(i + 1, args[i]);

}

// 利用sql查询获取结果集

// 利用反射创建实体类的对象

// 获取结果街的别名stud_id 获取jdbc的元数据

// 获取结果集每一列的值,结合上一步得到一个map键值对

// 键:列的别名 值:列的值

// 在利用反射对实体类对象的属性赋值

// 属性为map的键 值为map的值

rs = preparedstatement.executequery();

// 获取元数据

resultsetmetadata rsmd = rs.getmetadata();

map mapmetadata = new hashmap();

// 打印一列的列名

while (rs.next()) {

//获取数据表中满足要求的一行数据,并放入map中

for (int i = 0; i < rsmd.getcolumncount(); i++) {

string columnlabel = rsmd.getcolumnlabel(i + 1);

object columnvalue = rs.getobject(columnlabel);

// system.out.println(columnlabel);

mapmetadata.put(columnlabel, columnvalue);

}

//将map中的数据通过反射初始化t类型对象

if (mapmetadata.size() > 0) {

obj = clazz.newinstance();

for (map.entry entry : mapmetadata.entryset()) {

string fieldkey = entry.getkey();

object fieldvalue = entry.getvalue();

// system.out.println(fieldkey + ":" + fieldvalue);

reflectionutils.setfieldvalue(obj, fieldkey, fieldvalue);

//通过反射赋值

}

}

//将对象装入vector容器

vecrs.add(obj);

}

}

catch (exception e) {

e.printstacktrace();

}

return vecrs;

}

其中使用到的工具类方法

获取数据库连接jdbctools.getconnection()

/*

* 获取数据库的连接

*/

public static connection getconnection() throws exception {

connection conn = null;

string driver = null;

string jdbcurl = null;

string username = null;

string password = null;

// 获取properties对象

properties properties = new properties();

inputstream in = jdbctools.class.getclassloader().getresourceasstream("jdbc.properties");

properties.load(in);

driver = properties.getproperty("driver");

jdbcurl = properties.getproperty("jdbcurl");

username = properties.getproperty("user");

password = properties.getproperty("password");

class.forname(driver);

conn = drivermanager.getconnection(jdbcurl, username, password);

return conn;

}

reflectionutils.setfieldvalue(obj,fieldkey,fieldvalue);

将obj对象的fieldkey属性赋值为fieldvalue

//设置对象的属性

public static void setfieldvalue(object obj,string fieldname,object value){

field field=getdeclaredfield(obj, fieldname);

if(field==null){

throw new illegalargumentexception("could not find field["+

fieldname+"] on target ["+obj+"]");

}

makeaccessiable(field);

try{

field.set(obj, value);

}

catch(illegalaccessexception e){

system.out.println("不可能抛出的异常");

}

}

//判断field的修饰符是否是public,并据此改变field的访问权限

public static void makeaccessiable(field field){

if(!modifier.ispublic(field.getmodifiers())){

field.setaccessible(true);

}

}

//获取field属性,属性有可能在父类中继承

public static field getdeclaredfield(object obj,string fieldname){

for (class> clazz=obj.getclass(); clazz!=object.class; clazz=clazz.getsuperclass()){

try{

return clazz.getdeclaredfield(fieldname);

}

catch(exception e){

}

}

return null;

}

总结

以上就是本文关于java执行sql语句实现查询的通用方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值