| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:求教?random类的一个无法解释的问题
取消只看楼主 加入收藏
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
 问题点数:0 回复次数:6 
求教?random类的一个无法解释的问题

我用JSP+Acess数据库做一个在线考试系统,程序源代码如下:
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.lang.*"%>
<jsp:useBean id="wu" class="duo.exam" scope="session"/>
<html>
<head>
<title>考试正在进行之中</title>
</head>
<body>
<p align=center>考号为:<%=session.getAttribute("S_id")%>的<%=session.getAttribute("S_name")%>同学您正在考试之中,请专心作答</p>
<table width="80%" border=1 bordercolor="#ff00ff" cellspacing=1 align="center">
<%
try{
int Max=0;
String sql="select max(id) from tiku ";
ResultSet rs0=wu.executeQuery(sql);
while(rs0.next())
{ Max=rs0.getInt(1);}
Random random=new Random();
for(int j=1;j<=5;j++)
{
int i=random.nextInt(Max);
String sql1="select * from tiku where id='"+i+"'";
ResultSet rs1=wu.executeQuery(sql1);
//此代码整体都调试过的,没有错误,而且随机函数也没有任何错误,但是就是rs1.next()有问题,其返回的结果集为空!可奇怪的是String sql1="select * from tiku where id='"+i+"'";其语句却完全正确,且调试时其也能够正确的得到随机函数产生的随机数,可就是不知道为什么不在rs1.next()时确为空,在调试过过程中,又出现一个问题就是:把String sql1="select * from tiku where id='"+i+"'";改成sql1="select * from tiku where id='5'";确又能够正确的得到一行纪录,请问这错误是出在哪里,但是随机函数确实又没有错,请问哪们高手帮帮忙!!!////

if(rs1.next())
{
int s0=rs1.getInt("id");
String s1=rs1.getString("Question");
String s2=rs1.getString("Keya");
String s3=rs1.getString("Keyb");
String s4=rs1.getString("Keyc");
String s5=rs1.getString("Keyd");
%>
<tr><td ><%=s0%></td>
<td colspan=4><%=s1%></td>
<tr><td width=24%><%=s2%></td>
<td width=24%><%=s3%></td>
<td width=24%><%=s4%></td>
<td width=24%><%=s5%></td>
<td width=4%><select name="select" size=1>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select></td>
<%}}%>
</table>
</body>
</html>
<%}
catch(Exception e)
{System.out.println(e.getMessage()+"error");}
%>

搜索更多相关主题的帖子: random 源代码 数据库 java 
2006-03-21 10:31
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
首先谢谢版主与miss_friend给予本人的关注!
经过你们刚才的提醒之后,我又去验证了一下,随机函数与随机数是否正确。我首先查了下数据库当中的tiku表,而且我把“id定义了为主键。而且确实是随机函数能够产生的整数,但是还是不能够出现任何记录,与前面的情况是一模一样。本人被这个问题困扰了好几天了,找了好多资料看了,其思路也是这样的,好像根本就没有任何问题。请版主与各位高手帮帮
忙,本不不吝感谢!谢谢!
2006-03-21 13:39
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
谢谢gameovercn.也试了,可是就是没有用啦,不知道什么原因??
2006-03-21 16:37
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
谢谢你wangtaobig,其实你说的也蛮有道理。具体而又细致的指出了一些常容易犯的错误。
我的数据库当中的ID是这样的(0,1,2,3,4,5,),所以说用Max(id)只能够一种返回结果,那就是5,还有你刚才讲的random.nextInt(Max)有可以返回0这个结果,可是我ID当中已经有了这个记录的ID呀,所以说你刚才讲的这两点,对于本人这个例子我都分析过了,不存在你刚才讲的问题。
不管怎么样还是谢谢您真诚而又细致的指出这么细致的问题!谢谢你,你可不可以把你的邮箱告诉我呢?
2006-03-22 09:30
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
wangtaobig你好!
我已经将那些原文件发送至你的邮箱,谢谢你!
2006-03-23 18:34
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 

是的,我发给你的那程序与这只有一点点变化,只是多了一个判断随机数是否重复的功能!
我这还不能够解决呀?我想问你一下:
如果str是字符变量,且name属性也是字符型
String str="12";
String sql="select * from table where name='"+str+"'";如果这是字符变量完全是可以这样写的对吧。
且执行删除的话,没有任何问题
如果str是整形变量,且name属性也是整形
int str="12";
String sql="select * from table where name='"+str+"'"在SQL数据库里这样写好像也没有问题,而且在ACess里面调试时语法没有错误,如果执行删除,ResultSet不能够返回任何结果集。
再如果把String sql="select * from table where name=str"这句语句直接换成这种形式,如果执行删除语句的话,ResultSet有记录集,但却把数据表里面的所有记录都给删了。
我知道可能是这个整形表达式输写有问题!如果要正确输写的话,String sql="select * from table where name=???????应该是哪样的呢?
对了,我后来又给你了一封邮件,你有没有收到呀,要是收到的话,给我回邮件好不好呢?

2006-03-24 10:28
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
wangtaobig你好,实在是不好意思,因为是给你发贴子太紧张了,所以犯了这么多常识性的错误,因为我只是把我心里所想的全部写出来,也没得及检查,真的是那让你见笑,你提醒的是,小弟下次一定不会再犯这样的错误了,谢谢wangtaobig大哥,我给的发的邮件你有没有收到呢?
2006-03-25 10:11
快速回复:求教?random类的一个无法解释的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097100 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved