出现空白页怎么办?

时间:2023-01-24 08:33:40
从数据库中提取数据,转到另一页面时,出现了空白页,并没有错误提示,问题出在哪里?

21 个解决方案

#1


贴出原码

#2


那就是沒有返回咯。。
也有可能你Catch Exception,
但是沒有處理或打印
exception.getMessage();

#3


<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>获取提交方式</title>
</head>

<body>
<% //获取提交的排序方式

String name=request.getParameter("R");
if(name==null)
  {name="";}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);

String number,xingming;
Connection con=null;
Statement sql=null;
ResultSet rs=null;
int math,english,physics;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e) { }
try{con=DriverManager.getConnection("jdbc:odbc:fqcheng","sa","");
sql=con.createStatement();
String condition="select * from students order by"+name;//name为什么会是空值?
rs=sql.executeQuery(condition);
out.println("sdfsfsfs");
out.print("<Table Border>");
  out.print("<TR>");
out.print("<TH width=100>"+"学号");
  out.print("<TH width=100>"+"姓名");
  out.print("<TH width=50>"+"数学成绩");
  out.print("<TH width=50>"+"英语成绩");
  out.print("<TH width=50>"+"物理成绩");
out.print("<th width=50>"+"总成绩");
  out.print("</TR>");
 while(rs.next())
 {  out.print("<TR>");
  number=rs.getString(1);
  out.print("<TD>"+number+"</td>");
xingming=rs.getString(2);
  out.print("<TD>"+xingming+"</td>");
math=rs.getInt("数学成绩");
out.print("<TD>"+math+"</td>");
english=rs.getInt("英语成绩");
out.print("<TD>"+english+"</td>");
physics=rs.getInt("物理成绩");
out.print("<TD>"+physics+"</td>");
int total=math+english+physics;
out.print("<th>"+total+"</th>");
out.print("</TR>");   
  }
  out.print("</Table>");
  con.close();
}
catch(SQLException e) { }
%>
</body>
</html>

#4


if(name!=null || !name.equals(""))
{



}

#5


错了,不好意思。应该是:
if(name!=null && !name.equals(""))
{



}

#6


我按你的方法试了,还不行
if(name!=null && !name.equals(""))
{
}

String condition="select * from students order by"+name;//name为什么会是空值?

#7


异常里面没有任何处理 出问题了当然是空白 把异常打出来 一看就知道了

#8


谢谢关照!!菜鸟还要问一个问题,怎样才能把异常打出来?

#9


把<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>这行中去掉 errorPage=""试试看

#10


catch(Exception e)
{
   out.print(e.toString());
}

#11


catch(Exception e)
{
   out.print("e:"+e);
}

#12


有以下错误提示:
SQLException: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

#13


实在是太感谢各位的关照了!!!!!
按弯豆的做,有以下提示:
e:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

#14


String condition="select * from students order by"+name;//name为什么会是空值?

这句错了  order by 后面接的是数据表里面的字段名

假如你的表students 的学生姓名字段是name的话

直接这样写 String condition="select * from students order by name";


#15


你是不是想提取在上一页面所填name的信息,如果是这句就不对了。
String condition="select * from students order by"+name;//name为什么会是空值?

改为:String condition="select * from students where name1='"+name+"'";
name1是数据库中的字段名;
如果name为空也就是上一页面的name属性值没有传过来;得到一个null;
在传递参数时做一个判断,如果为空就返回去原来的页面或提示信息。

#16


name是我定义的一个字符串变量,用来获取数据表里面的字段名,以便可以按姓氏排序、总分排序、英语成绩排序。
String name=request.getParameter("R");
以下是另一页面的表单代码
<form name="form" method="post" action="byname1.jsp">
  <input type="radio" name="R" value="姓名">按姓氏查询
  <input type="radio" name="R" value="数学成绩+英语成绩+物理成绩">按总分排序
  <input type="radio" name="R" value="英语成绩">按英语成绩排序
  <input type="submit" name="g" value="提交">
</form>

#17


String name=request.getParameter("R");
if(name==null)
  {name="";}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);

上面的这样写会不会更好:
    String name;
    if(request.getParameter("R")!=null)
        name=request.getParameter("R").trim();
这样写是没问题的,但是我看到你提交过来的R的value是"姓名"、"数学成绩+英语成绩+物理成绩"等这些东西,它是无论如何也不可能在数据库中找到这样的列的,你可以将vlaue写成假设你的"姓名"在students表中是"xm"这个字段,就写成"xm",“总分”是"zf",就写成"zf",这样的!

上面是这个问题的关键,下面的语句我不知道写得对不对

然后再下面的查询中:
    String condition="select * from students order by 'name'";

这样应该ok了!祝你好运!

#18


查询语句可能错误

因为name是变量,所以应该写成:
    String condition="select * from students order by '"+name+"'";

这样应该ok了!祝你好运!

#19


String name;
    if(request.getParameter("R")!=null)
        name=request.getParameter("R").trim();
这样写的话只是适合Strig类型的,如果分数是int,或者float等类型就需要转换

#20


你们真好,我是这个论坛的新手。谢谢各位!!谢谢!!现在问题已解决。

#21


大家都有功劳,寄生的世界功劳最大,只改String condition="select * from students order by 'name'";就行了。已经显示出来了,现在又有新的问题要问大家。显示之后并不按姓氏排序或总分排序或英语成绩排序。20分送给谁?

#1


贴出原码

#2


那就是沒有返回咯。。
也有可能你Catch Exception,
但是沒有處理或打印
exception.getMessage();

#3


<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>获取提交方式</title>
</head>

<body>
<% //获取提交的排序方式

String name=request.getParameter("R");
if(name==null)
  {name="";}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);

String number,xingming;
Connection con=null;
Statement sql=null;
ResultSet rs=null;
int math,english,physics;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e) { }
try{con=DriverManager.getConnection("jdbc:odbc:fqcheng","sa","");
sql=con.createStatement();
String condition="select * from students order by"+name;//name为什么会是空值?
rs=sql.executeQuery(condition);
out.println("sdfsfsfs");
out.print("<Table Border>");
  out.print("<TR>");
out.print("<TH width=100>"+"学号");
  out.print("<TH width=100>"+"姓名");
  out.print("<TH width=50>"+"数学成绩");
  out.print("<TH width=50>"+"英语成绩");
  out.print("<TH width=50>"+"物理成绩");
out.print("<th width=50>"+"总成绩");
  out.print("</TR>");
 while(rs.next())
 {  out.print("<TR>");
  number=rs.getString(1);
  out.print("<TD>"+number+"</td>");
xingming=rs.getString(2);
  out.print("<TD>"+xingming+"</td>");
math=rs.getInt("数学成绩");
out.print("<TD>"+math+"</td>");
english=rs.getInt("英语成绩");
out.print("<TD>"+english+"</td>");
physics=rs.getInt("物理成绩");
out.print("<TD>"+physics+"</td>");
int total=math+english+physics;
out.print("<th>"+total+"</th>");
out.print("</TR>");   
  }
  out.print("</Table>");
  con.close();
}
catch(SQLException e) { }
%>
</body>
</html>

#4


if(name!=null || !name.equals(""))
{



}

#5


错了,不好意思。应该是:
if(name!=null && !name.equals(""))
{



}

#6


我按你的方法试了,还不行
if(name!=null && !name.equals(""))
{
}

String condition="select * from students order by"+name;//name为什么会是空值?

#7


异常里面没有任何处理 出问题了当然是空白 把异常打出来 一看就知道了

#8


谢谢关照!!菜鸟还要问一个问题,怎样才能把异常打出来?

#9


把<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>这行中去掉 errorPage=""试试看

#10


catch(Exception e)
{
   out.print(e.toString());
}

#11


catch(Exception e)
{
   out.print("e:"+e);
}

#12


有以下错误提示:
SQLException: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

#13


实在是太感谢各位的关照了!!!!!
按弯豆的做,有以下提示:
e:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

#14


String condition="select * from students order by"+name;//name为什么会是空值?

这句错了  order by 后面接的是数据表里面的字段名

假如你的表students 的学生姓名字段是name的话

直接这样写 String condition="select * from students order by name";


#15


你是不是想提取在上一页面所填name的信息,如果是这句就不对了。
String condition="select * from students order by"+name;//name为什么会是空值?

改为:String condition="select * from students where name1='"+name+"'";
name1是数据库中的字段名;
如果name为空也就是上一页面的name属性值没有传过来;得到一个null;
在传递参数时做一个判断,如果为空就返回去原来的页面或提示信息。

#16


name是我定义的一个字符串变量,用来获取数据表里面的字段名,以便可以按姓氏排序、总分排序、英语成绩排序。
String name=request.getParameter("R");
以下是另一页面的表单代码
<form name="form" method="post" action="byname1.jsp">
  <input type="radio" name="R" value="姓名">按姓氏查询
  <input type="radio" name="R" value="数学成绩+英语成绩+物理成绩">按总分排序
  <input type="radio" name="R" value="英语成绩">按英语成绩排序
  <input type="submit" name="g" value="提交">
</form>

#17


String name=request.getParameter("R");
if(name==null)
  {name="";}
byte b[]=name.getBytes("ISO-8859-1");
name=new String(b);

上面的这样写会不会更好:
    String name;
    if(request.getParameter("R")!=null)
        name=request.getParameter("R").trim();
这样写是没问题的,但是我看到你提交过来的R的value是"姓名"、"数学成绩+英语成绩+物理成绩"等这些东西,它是无论如何也不可能在数据库中找到这样的列的,你可以将vlaue写成假设你的"姓名"在students表中是"xm"这个字段,就写成"xm",“总分”是"zf",就写成"zf",这样的!

上面是这个问题的关键,下面的语句我不知道写得对不对

然后再下面的查询中:
    String condition="select * from students order by 'name'";

这样应该ok了!祝你好运!

#18


查询语句可能错误

因为name是变量,所以应该写成:
    String condition="select * from students order by '"+name+"'";

这样应该ok了!祝你好运!

#19


String name;
    if(request.getParameter("R")!=null)
        name=request.getParameter("R").trim();
这样写的话只是适合Strig类型的,如果分数是int,或者float等类型就需要转换

#20


你们真好,我是这个论坛的新手。谢谢各位!!谢谢!!现在问题已解决。

#21


大家都有功劳,寄生的世界功劳最大,只改String condition="select * from students order by 'name'";就行了。已经显示出来了,现在又有新的问题要问大家。显示之后并不按姓氏排序或总分排序或英语成绩排序。20分送给谁?