- Java code
import java.util.*;import java.sql.*;public class InputStudent { public static void main(String args[]) { Connection con; String sql; Statement stmt; int num; String name,sex; int age;//一、java直接连接Oracle10数据库 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); } try { con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","system","system"); stmt = con.createStatement(); //写 select语句 sql = " SELECT * FROM S where sex=?"; PreparedStatement stmt0=con.prepareStatement(sql); // stmt0=con.prepareStatement(sql); stmt0.setString(1,"女"); //执行select SQL语句,返回结果集rs,可以看成是游标 ResultSet rs = stmt0.executeQuery(); // ResultSet rs = stmt.executeQuery(sql); //按格式要求打印输出表头部分 System.out.println("\n\n\n\n"); System.out.println(" 全体学生信息表"); System.out.println("--------------------------------"); System.out.println("学号 姓名 性别 年龄"); System.out.println("--------------------------------"); while(rs.next()){//取当前行数据项的值赋给变量 num = rs.getInt("sno"); name = rs.getString("sname"); sex = rs.getString("sex"); age = rs.getInt("age"); //java将变量的 值按要求的格式输出 System.out.println(num+" "+name+" "+sex+" "+age); } System.out.println("---------------------------------"); stmt.close(); //事务提交, 事务回滚方法是 rollbck() con.commit(); con.close(); } catch(SQLException ex) { System.err.println("**SQLException: " + ex.getMessage()); } }}
请问为什么感觉代码木有问题,而且数据库中也有数据,可是却查不出来啊?
------解决方案--------------------
SELECT * FROM S where sex= '女'
直接用这样的sql在数据库端执行能检索到数据吗?怀疑LZ的数据库的数据sex里可能带有空格而检索不到吧
------解决方案--------------------
我觉得char(3)有问题,可以换成varchar试试
------解决方案--------------------
1 数据库里有空格
2 编码不一致
------解决方案--------------------
sql = " SELECT * FROM S where sex=?";
-->
sql = " SELECT * FROM S where trim(sex)=?";
------解决方案--------------------
经过代码测试:
ptmt.setString(1,"女 ");后边加个空格就可以查出来了.
------解决方案--------------------
1 看看数据库里是否有空格
2 stmt0.setString(1,"女");换成stmt0.setString(1,"a")试试,可能是编码问题
------解决方案--------------------
1.数据库中没得性别为"女"的数据,可能你的性别是"女 ";
2.字符编码,传进去的中文出现乱码。所以无法查询;
3.建议性别字段成int类型,1代表女,2代表男试试。
------解决方案--------------------