kristenlee1218 2017-03-20 01:00 采纳率: 61.3%
浏览 981

java.lang.NullPointerException

接口:public 《T》 List《T》 query(String sql, Class《T》 clazz, Object[] parameters);

实现方法:
public static 《T》 List《T》 query(String sql, Class《T》 clazz,
Object[] parameters) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ResultSetMetaData metaData = null;
List《T》 list = new ArrayList《T》();
int index = 1;
try {
pstmt = conn.prepareStatement(sql); ///问题行
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
// pstmt.setObject(第几个参数, 替换成什么);
pstmt.setObject(index, parameters[i]);
}
}
rs = pstmt.executeQuery(sql);
// 封装resultset
metaData = rs.getMetaData();
// 取出列的信息
int columnLength = metaData.getColumnCount();
// 获取列数
while (rs.next()) {
// 通过反射机制创建一个对象
T result = clazz.newInstance();
for (int i = 0; i < columnLength; i++) {
String metaDataKey = metaData.getColumnName(i + 1);
Object resultsetValue = rs.getObject(metaDataKey);
if (resultsetValue == null) {
resultsetValue = "";
}
Field field = clazz.getDeclaredField(metaDataKey);
field.setAccessible(true);
field.set(result, resultsetValue);
}
list.add(result);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBCloseUtils.closeCSR(conn, pstmt, rs);
}
return list;
}

测试:

  String sql = null;
List《User》 list = new ArrayList《User》();
    sql = "select * from user_info where id > ? order by id asc";
    list = databaseFactory.query(sql, User.class, new Object[] { 2 }); //问题行
    if (list != null) {
        for (User user : list) {
            System.out.println("username =" + user.username);
            System.out.println("password =" + user.password);
        }
        System.out.println(sql);
        System.out.println("inquiry4");
        System.out.println("-------------------------------");
    }

问题:

java.lang.NullPointerException
at study.java.DBOperateTUtilts.query(DBOperateTUtilts.java:74)
at study.java.DatabaseFactoryImp.query(DatabaseFactoryImp.java:55)
select * from user_info where id > ? order by id asc

inquiry4

at study.java.test.Demo.main(Demo.java:106)
  • 写回答

1条回答 默认 最新

  • StackTc 2017-03-20 01:08
    关注

    if(conn==null){
    System.out.println("conn is null");
    }

    connection是需要获取的,
    Class.forName("com.mysql.jdbc.Driver");
    String url="jdbc:mysql://localhost:3306/briup?user=root&password=root";

    //定义连接数据库的url

    conn=DriverManager.getConnection(url); //获取数据库连接

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog