jdbc查询问题,进不去while里面折行代码,请问这是什么回事?
数据库查到有数据4条记录代码publicList<AAAA>find(intid){List<AAAA>list=newArrayList<AAAA>();Connect...
数据库查到有数据4 条记录
代码
public List<AAAA> find(int id) {
List<AAAA> list = new ArrayList<AAAA>();
Connection con = null;
PreparedStatement ps = null;
ResultSet res = null;
try {
con = Factory.getConnection();
String sql = " SELECT a.name,b.cxx,c.PRICE FROM tb_a a,tb_b b,tb_c c WHERE a.id = b.aid AND b.id=c.bid AND a.id=c.bid and a.id = ?";
ps = con.prepareStatement(sql);
ps.setInt(1, id);
System.out.println(sql);
res = ps.executeQuery();
System.out.println("========1111111111=============");
while(res.next()){
System.out.println("========222222222=================");
AAAA a = new AAAA();
a.setCxx(res.getString("cxx"));
a.setName(res.getString("name"));
a.setPrice(res.getDouble("PRICE"));
System.out.println("========>"+a);
list.add(a);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
Factory.close(con, ps, res);
}
} 展开
代码
public List<AAAA> find(int id) {
List<AAAA> list = new ArrayList<AAAA>();
Connection con = null;
PreparedStatement ps = null;
ResultSet res = null;
try {
con = Factory.getConnection();
String sql = " SELECT a.name,b.cxx,c.PRICE FROM tb_a a,tb_b b,tb_c c WHERE a.id = b.aid AND b.id=c.bid AND a.id=c.bid and a.id = ?";
ps = con.prepareStatement(sql);
ps.setInt(1, id);
System.out.println(sql);
res = ps.executeQuery();
System.out.println("========1111111111=============");
while(res.next()){
System.out.println("========222222222=================");
AAAA a = new AAAA();
a.setCxx(res.getString("cxx"));
a.setName(res.getString("name"));
a.setPrice(res.getDouble("PRICE"));
System.out.println("========>"+a);
list.add(a);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
Factory.close(con, ps, res);
}
} 展开
1个回答
展开全部
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* jdbc java 操作数据库
* 1,加载驱动 导入jar包
* 2,建立连接
* 3,操作
* 4,释放资源
* @author Administrator
*
*/
public class JdbcDemo {
public static String getSql() {
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try {
//创建连接
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:study", "bjsxt", "bjsxt");
String sql = getSql()";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()){
System.out.println("登录成功!");
}else{
System.out.println("登录失败!");
}
while(rs.next()){
Thread.sleep(500);
System.out.println(rs.getString(1)+","+rs.getDouble(2)+","+rs.getInt(3));
}
} catch (Exception e) {
}finally{
try {
if (rs != null) {
rs.close();
}
} catch (Exception e2) {
}
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e2) {
}
try {
if (con != null) {
con.close();
}
} catch (Exception e2) {
}
}
}
}
追问
大哥,我看你了你给的代码,为什么我输入了SQL语句 回车之后就显示登录成功,下面的都没有执行呢?查询的数据都没有出来...数据库连接都是正常的。
回答
你插了多少条数据进去?你如果插一条进去的,if(rs.next())执行了这一句后就到结果集的末端了,while(rs.next())执行不了
追问
那个emp表里面有13条数据,没加这段代码的时候都能执行,都能打印出来
SMITH,800.0,20
ALLEN,1600.0,30
WARD,1250.0,30
JONES,2975.0,20
MARTIN,1250.0,30
BLAKE,2850.0,30
CLARK,2450.0,10
KING,5000.0,10
TURNER,1500.0,30
JAMES,950.0,30
FORD,3000.0,20
MILLER,1300.0,10
上面就是没加那段代码的时候输出的,我在if里面打印了sql能打印出来,就是下面的while遍历没有执行
回答
你连接的是study表啊,不是emp表
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:study", "bjsxt", "bjsxt");
你自己写的
追问
我连接的是一个数据库,名字就是study,用SQL语句查询这个数据库里面的emp表字段。
我找到问题所在了,输入的查询语句是固定的- -!! 因为while语句遍历的只有3个字段 ename,sal,deptno....所以只能输入select ename,sal,deptno from emp和select * from emp 才行。
我想问一下,如何修改while语句才能对表做任意查询呢?
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* jdbc java 操作数据库
* 1,加载驱动 导入jar包
* 2,建立连接
* 3,操作
* 4,释放资源
* @author Administrator
*
*/
public class JdbcDemo {
public static String getSql() {
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try {
//创建连接
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:study", "bjsxt", "bjsxt");
String sql = getSql()";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()){
System.out.println("登录成功!");
}else{
System.out.println("登录失败!");
}
while(rs.next()){
Thread.sleep(500);
System.out.println(rs.getString(1)+","+rs.getDouble(2)+","+rs.getInt(3));
}
} catch (Exception e) {
}finally{
try {
if (rs != null) {
rs.close();
}
} catch (Exception e2) {
}
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e2) {
}
try {
if (con != null) {
con.close();
}
} catch (Exception e2) {
}
}
}
}
追问
大哥,我看你了你给的代码,为什么我输入了SQL语句 回车之后就显示登录成功,下面的都没有执行呢?查询的数据都没有出来...数据库连接都是正常的。
回答
你插了多少条数据进去?你如果插一条进去的,if(rs.next())执行了这一句后就到结果集的末端了,while(rs.next())执行不了
追问
那个emp表里面有13条数据,没加这段代码的时候都能执行,都能打印出来
SMITH,800.0,20
ALLEN,1600.0,30
WARD,1250.0,30
JONES,2975.0,20
MARTIN,1250.0,30
BLAKE,2850.0,30
CLARK,2450.0,10
KING,5000.0,10
TURNER,1500.0,30
JAMES,950.0,30
FORD,3000.0,20
MILLER,1300.0,10
上面就是没加那段代码的时候输出的,我在if里面打印了sql能打印出来,就是下面的while遍历没有执行
回答
你连接的是study表啊,不是emp表
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:study", "bjsxt", "bjsxt");
你自己写的
追问
我连接的是一个数据库,名字就是study,用SQL语句查询这个数据库里面的emp表字段。
我找到问题所在了,输入的查询语句是固定的- -!! 因为while语句遍历的只有3个字段 ename,sal,deptno....所以只能输入select ename,sal,deptno from emp和select * from emp 才行。
我想问一下,如何修改while语句才能对表做任意查询呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询