Java sql查询

来源:互联网 发布:知远战略与防务网站 编辑:程序博客网 时间:2024/06/06 05:11

对于数据库查询,也就是jdbc,我常常是写完一条SQL语句然后new一个prepareStatment对象然后执行该语句,查询的条件通常在sql语句里面就写死了。

但如果要关联网页的话,也就是获取网页<input type="text">中的值来查询的话,就要动态的改变sql语句查询的值了。

举个栗子:

我们如果要根据学生姓名和学号来查询的话。

首先从表单获取学生学号和姓名,假设我两个input一个是叫stuNumber,一个叫stuName。

String stuNumber = "/*接收学生姓名的表单名*/stuNumber";

String stuName = "stuName";

StringBuilder sql = new StringBuilde("select stuName,stuNumber,sex,birthday from student where 1=1");

//对接收的值进行为空判断:

//这里注意一下,为空并不等于字符串为空,我们需要做双判断,并且在判断字符是否为空的时候,我们不用stuNumber.trim().equals("")而用"".equals(stuNumber).trim() 的目的是防止为空的时候调用方法报错,所以把""放前面,并且加入trim()去掉空格。

List<String> list = new ArrayList<String>();

if(stuNumber != null && !"".equals(stuNumber).trim()) {

      sql.append(" and stuNumber = ?")

//写到这里我们也已经知道了这个问号的地方是要填入我们从表单获取的用户填入所需查询的学生姓名,比如李白,我们先创建一个List<String>来存储一下,不要直接拼接进sql语句,这样会有风险,而且参数的情况也是根据这个sql语句拼还是不拼接这个参数才能填入,而且要在statement对象创建预编译后加入。

       list.add(stuNumber);//将要查询的学号传入

}

//对stuName也是一样的写法

if(stuName!= null && !"".equals(stuName).trim()) {

      sql.append(" and stuName = ?");

      list.add(stuName);

}

//创建PrepareStatment对象对前面完全一样的sql语句进行预编译

PrepareStatment statement = new PreapareStatment(sql);

//这里说的前面完全一样的语句是指"select stuName,stuNumber,sex,birthday from student where 1=1"这句,我们需要修改的只是他后面追加的查询值。这样能加快数据库的查询速度。

//实例化了statement对象后,我们把要查询的值传入。

//传入值有多少要看我们上面这个ArrayList存储了多少数值。我们这里最多只存储了stuNumber和stuName.

//使用循环遍历赋值

for(int i = 0; i < list.size(); i++) {

       statement.setString(i+1,list.get(i));

//这里setString需要我们给定两个参数,第一个是索引,第二个是内容,在数据库查询中,比如一句语句select * from student whrere stuName =?  and stuNumber = ?;

这里有2个问号,而数据库的索引是从1开始的,所以我们第一个索引给予的是i+1,也就是从1开始数,1是第一个问号的下标,而第二内容则是从数组出发,也就是从下标为0出发。

//到这里已经基本结束了,最后做一个值保留,把值存入request里。

request.setAttribute("stuName",stuName);

request.setAttribute("stuNumber",stuNumber);

原创粉丝点击