public List<To_DingDan> findByHyId3(Integer id) throws Exception{ String sql = "select * from (select * from to_dingdan t where t.hyid="+id+" and t.type='待付款' order by t.id desc) j group by j.hyid2 order by j.id desc"; // 获取到连接 List<To_DingDan> list = new ArrayList<To_DingDan>(); // 获取到连接 //加载驱动 Class.forName("com.mysql.jdbc.Driver"); //获取连接Connection Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/jiaju4?useUnicode=true&characterEncoding=UTF8", "root", "123456"); //得到执行sql语句的对象Statement Statement stmt = (Statement) conn.createStatement(); //执行sql语句,并返回结果 ResultSet rs = (ResultSet) stmt.executeQuery(sql); //rs.next()在本地为true 部署到服务器为false while (rs.next()) { // 将查询出的内容添加到list中,其中userName为数据库中的字段名称 System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++"); To_DingDan dd = new To_DingDan(); dd.setHyid2(rs.getInt("hyid2")); list.add(dd); } rs.close(); stmt.close(); conn.close(); System.out.println(list.size()+"******************"); return list; }
首先数据库字段,格式,用户名,密码完全一样。
可以将localhost换成本地服务器的IP地址试试,另外将sql语句在服务器运行一下看是否能查到数据
s sql语句在服务器可以执行,也可以查出来数据
在服务器报错的信息是什么?
没有报错,打印日志里也没有报错,rs.next()为false,直接就跳过了循环,所以不报错。
@小胡来生缘: 那这个就不知道了,没报错说明连到数据库了。rs.next()为false 说明你的sql语句查不到记录。但是你将sql语句放在服务器中运行却可以查到。。很奇怪。
已解决:将jdbc:mysql://localhost:3306/jiaju4?useUnicode=true&characterEncoding=UTF8", "root", "123456");
改为jdbc:mysql://localhost:3306/jiaju4?characterEncoding=UTF8", "root", "123456");
如果程序可以启动那么说明已经连接上了数据库!你可以把服务器的远程访问开启,在本地连接服务器数据库看看是什么情况!