帮忙看看这段代码错在哪了?

DataSource datasource;
BufferedReader d=new BufferedReader(new InputStreamReader(System.in));
String bookname;
while(!("exit".equals(bookname = d.readline()))){
    Connection con = datasource.getConnection()
    Statement stmt = con.createStatement();
    ResultSet res = stmt.executeQuery("select * from testtable where bookname= '" + bookname + "'"); 
    if(res.next()){
        System.out.println("价格为:"+res.getDouble("price"));
    }//if 结束
}//while 结束
阅读 2.4k
3 个回答

貌似你的代码编译都不通过, DataSource 变量都没初始化,第二是你的写法有问题,居然在 while 循环中去获得连接。最好把获得 Connection 放到 while 外面。

如果楼主能贴出报错信息,那就更直观了。
不过也能看出这段代码会抛出空指针异常NullPointerException
DataSource dataSource;
这里只声明了dataSource,还没对其赋值。
而后面的代码直接调用了dataSource.getConnection()
难免空指针。

空指针异常很明显,但最大的问题是while循环里面创建连接而且没释放!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题