实例是这样的:
测试类
测试类的是为了输出数据库中有多少条数据。
package com.cxj.test;
import com.cxj.utils.JDBCUtils;
import jdk.nashorn.internal.scripts.JD;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//返回单值操作测试类
public class TestScalar {
public static void main(String[] args) throws SQLException {
//执行返回单值的sql语句
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
String sql = "select count(*) from category";
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
if(rs.next()){
System.out.println(rs.getObject(1));
}
JDBCUtils.release(conn,pre,null);//调用方法关闭连接
}
}
数据库
数据库中数据如下:
测试结果为:
封装
对除SQL语句的其他地方进行封装:在工具类中添加如下代码
/**
* 用于返回单值的操作
* @param sql 传进来的SQL语句
* @param params 多组
* @param <T> 返回类型为T
* @return 返回为单值
*/
public static <T> T selectScalar(String sql,Object ...params){
Connection conn = null;//创建Connection对象
PreparedStatement pre = null;//创建PreparedStatement对象
ResultSet rs = null;//用来接收
T result = null;
try {
conn = getConnection();//获取数据库连接
pre = conn.prepareStatement(sql);
//设置参数
fillStatement(pre,params);
rs = pre.executeQuery();//执行
if(rs.next()){
result = (T)rs.getObject(1);
}
return result;
} catch (SQLException e) {
throw new RuntimeException(e);
}finally {
release(conn,pre,rs);
}
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8d9c8238a8c197dd8485245ea4cf8c7a.png)