当前位置: 代码迷 >> J2SE >> 请教为什么感觉代码木有有关问题,而且数据库中也有数据,可是却查不出来啊
  详细解决方案

请教为什么感觉代码木有有关问题,而且数据库中也有数据,可是却查不出来啊

热度:167   发布时间:2016-04-24 02:17:40.0
请问为什么感觉代码木有问题,而且数据库中也有数据,可是却查不出来啊?
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代表男试试。
------解决方案--------------------
探讨

我觉得char(3)有问题,可以换成varchar试试
  相关解决方案