Java 我在从ResultSet rs获取输出时获得prblm(使用任何方法)
源代码:Java 我在从ResultSet rs获取输出时获得prblm(使用任何方法),java,sql,servlets,Java,Sql,Servlets,源代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); String facName[] = null; int rows = 0; double scr[] = null; PrintWrit
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
String facName[] = null;
int rows = 0;
double scr[] = null;
PrintWriter out=response.getWriter();
try {
String sql;
ResultSet rs;
Class.forName("com.mysql.jdbc.Driver");
Connection c1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/apj", "root", "root");
Statement s = c1.createStatement();
sql="select * from teacherreportA";
rs=s.executeQuery(sql);
rs.last();
int len = rs.getRow();
rs.beforeFirst();
double score[] = new double[len];
String facItr[] = new String[len];
int lenCnt = 0;
// ****upto here it is working fine but
while(rs.next()) {
facItr[lenCnt] = rs.getString("tname");
lenCnt++;
}
lenCnt = 0;
rs.beforeFirst();
// rsM.close();
while(lenCnt<len) {
// ResultSet rs ;
// Class.forName("com.mysql.jdbc.Driver");
// c1=DriverManager.getConnection("jdbc:mysql://localhost:3306/apj", "root", "root");
// s =c1.createStatement();
score[lenCnt]=0;
out.println(lenCnt+" here "+len+" ");
int a,b,c,d;
sql = "select * from teacherreportA where tname = \""+facItr[lenCnt]+"\"";
out.println(" !!! "+sql);
rs=s.executeQuery(sql);
try {
// here rs.(any method) is generating error java.sql.SQLException out.println(rs.findColumn("tname")+"***"+rs.getString("tname"));
} catch(SQLException exp) {
out.println(" $$$ "+exp.toString());
}
a=rs.getInt(4);
b=rs.getInt(5);
c=rs.getInt(6);
d=rs.getInt(7);
score[lenCnt] += (a*100+b*75+c*50+d*25)/(a+b+c+d);
out.println(lenCnt+"here");
sql="select * from teacherreportB where tname = '"+facItr[lenCnt]+"'";
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
processRequest(请求、响应);
字符串facName[]=null;
int行=0;
双scr[]=null;
PrintWriter out=response.getWriter();
试一试{
字符串sql;
结果集rs;
Class.forName(“com.mysql.jdbc.Driver”);
连接c1=DriverManager.getConnection(“jdbc:mysql://localhost:3306/apj“,”根“,”根“);
语句s=c1.createStatement();
sql=“从teacherreportA中选择*”;
rs=s.executeQuery(sql);
rs.last();
int len=rs.getRow();
rs.beforeFirst();
双倍分数[]=新的双倍分数[len];
String facItr[]=新字符串[len];
int lenCnt=0;
//****到目前为止,工作正常,但
while(rs.next()){
facItr[lenCnt]=rs.getString(“tname”);
lenCnt++;
}
lenCnt=0;
rs.beforeFirst();
//rsM.close();
while(lenCnt代码非常难看。我不喜欢将光标移到最后再移回来。当你用列表替换数组时,你可以完全跳过这一部分,它是自动调整大小的
这个循环真的很奇怪,因为你像在第一个查询中一样循环相同的数据
见:
默认情况下,每个语句对象只能打开一个ResultSet对象
因此,如果读取一个ResultSet对象
与另一个的读取交错,每个都必须已生成
通过不同的语句对象。语句中的所有执行方法
如果
开放的存在
SQL异常中有什么消息?它只提供了SQLException,没有提供任何其他信息
我正确获取了行数,但是我想使用“rs”对象进行新的SQL查询,但在那里出现了错误。我可以在此处添加屏幕截图吗?如果是,那么异常应如何包含消息,请附加e.getMessage()。我建议您使用PreparedStatement,而不是手动构造查询。它更安全(css)且可读性更好。我也附加了e.getMessage(),但它给了Null。让我实现您所说的…并返回否它不起作用…我尝试关闭ResultSet对象,然后关闭所有三个对象(ResultSet、Statement、Connection)然后创建所有3个新对象,但相同的问题仍然存在。你是指相同的…还是其他什么???