首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

SQL出现很奇怪的现象,查询分析器执行结果与JDBC Java执行获取结果不一致,什么原因啊解决方案

2012-03-14 
SQL出现很奇怪的现象,查询分析器执行结果与JDBC Java执行获取结果不一致,什么原因啊~~~如题,SQL语句如下SQ

SQL出现很奇怪的现象,查询分析器执行结果与JDBC Java执行获取结果不一致,什么原因啊~~~
如题,SQL语句如下

SQL code
Declare  @class varchar(50),@point varchar(80)set @class = ?;set @know_point = ?SELECT u1.[user_id],u1.[user_name],[test_result] = (CASE WHEN [test_result] IS NULL THEN -1 ELSE [test_result] END)FROM (SELECT u2.[user_id],u2.[user_name] FROM users AS u2WHERE (u2.class = @class)AS u1 LEFT JOIN(SELECT * FROM [prep_result] AS sr2 WHERE sr2.[know_point]= @know_point)AS sr1 ON u1.[user_id] = sr1.[user_id]

两个表prep_result、users
表prep_result(装成绩)有列名:user_id(帐号)、class(班级)、test_result(成绩)、know_point(知识点)
表users(装所有学生)有:user_id(帐号)、user_name(姓名)、class(班级)
SQL语句的功能是在表user中通过指定班级和在表prep_result中通过指定知识点联合查找所有学生,若学生还没成绩,成绩记为-1
Java代码如下(直接从执行语句写好了,用到变量ResultSet rs ; PreparedStatement p都已设置好)
Java code
 p.setString(1,"1班");//设置第一个参数(@class) p.setString(2, "A");//设置第二个参数(@point)rs = p.executeQuery();//执行查找的sql语句while(rs.next()){String userId = rs.getString("user_id");//经调试数据正常String userName = rs.getString("user_name");//经调试数据正常int result = rs.getInt("test_result");//这里!result的值全为-1,但在查询分析器那是有成绩的,表中也有成绩的!}

java代码最后一行那,就在那数据出现错误了,与现有的数据不一致,求指点,小弟我是新手,麻烦请尽量说详细点,最重要说出原因以及解决办法,小弟快疯了~

[解决办法]
你的这个语句:
Declare @class varchar(50),@point varchar(80)
set @class = ?;set @know_point = ?
根本不是SQL里的语句.
如果是拼查询语句,那直接把变量值放到相应的where条件里,如果是字符型的,还要加上相应的单引号.而不要另建SQL变量.
[解决办法]
你写的这个明显不是sql语句,也不是存储过程
sql用preparestatement
存储过程用 CallableStatement

热点排行