Connection con = DriverManager.getConnection(sConnStr, user, password);
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select ip,mac,users,computer,workgroup,gn,memo,jbr,date1 from IPADDRESS where 1>0";
if (ip!="")
sql=sql+" and ip='"+ip+"'";
if (mac!="")
sql=sql+" and mac='"+mac +"'";
if (users!="")
sql=sql+" and users='"+users+"'";
if (computer!="")
sql=sql+" and computer='"+computer+"'";
if (workgroup!="none")
sql=sql+" and workgroup='"+workgroup+"'";
if (memo!="")
sql=sql+" and memo like '" + memo + "%'";
if (jbr!="")
sql=sql+" and jbr='"+jbr+"'";
if (date1!="")
sql=sql+" and date1='"+date1+"'";
ResultSet rs=stmt.executeQuery(sql);
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
out.print("</table>");
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(!rs.next())
//如果查询结果不为空
{
while(rs.next())
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
}
上面为我所写的servlet,主要任务是根据客户端页面输入的查询条件,进行查询!
可是经编译后,执行的时候,结果总是没有值(页面只打印了表头 IP地址……)
不知道什么原因,请告知!!!谢谢!!!
还有:
执行完ResultSet rs=stmt.executeQuery(sql);后,如何判断rs中是否有值,像我那样的判断可以吗?
24 个解决方案
#1
if(!rs.next()){}
//上面的这个条件判断完全没有必要
while(rs.next())
{}
就可以了
if (ip!="")
if (mac!="")
........
-->
if(!ip.equals(""))
if(!mac.equals(""))
.....
//上面的这个条件判断完全没有必要
while(rs.next())
{}
就可以了
if (ip!="")
if (mac!="")
........
-->
if(!ip.equals(""))
if(!mac.equals(""))
.....
#2
改过了,还是没有结果
无论查询是否有结果,显示的都是:
IP地址 MAC地址 用户名 计算机名 工作组 功能 备注 经办人 经办日期
帮帮忙!!!
无论查询是否有结果,显示的都是:
IP地址 MAC地址 用户名 计算机名 工作组 功能 备注 经办人 经办日期
帮帮忙!!!
#3
数据库有没有记录?
取的时候是不是按数据库中字段顺序来取的?
注意字段类型!
或许就没有满足条件的记录
sql=sql+" and memo like '" + memo + "%'";
---》
sql=sql+" and memo like '%" + memo + "%'";
取的时候是不是按数据库中字段顺序来取的?
注意字段类型!
或许就没有满足条件的记录
sql=sql+" and memo like '" + memo + "%'";
---》
sql=sql+" and memo like '%" + memo + "%'";
#4
要按顺序取数据,中间不能遗漏
你漏了gn
你漏了gn
#5
估计是 没有记录吧。
你把里面的out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");改成:
out.println("<td><p align=center><font color=red>对不起,没有您要的信息!</font></p></td></tr></table>");
看是否显示此提示。
你把里面的out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");改成:
out.println("<td><p align=center><font color=red>对不起,没有您要的信息!</font></p></td></tr></table>");
看是否显示此提示。
#6
首先把最基本的错误改掉:
if (ip!="") --> if (!ip.equals(""))
if (ip!="") --> if (!ip.equals(""))
#7
另外,请不要将那么多的页面HTML在java中输出,建议你学习一下MVC架构,
#8
控制台有没有错误信息?
#9
import java.io.*;
import javax.servlet.*;
import java.util.*;
import java.text.*;
import java.lang.*;
import java.sql.*;
import java.net.URL;
import javax.servlet.http.*;
public class searchip extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>search IP</title>");
out.println("<p align=center>IP 查询结果!</p>");
out.println("</head>");
out.println("<body>");
String ip=new String(request.getParameter("ip").getBytes("ISO-8859-1"));
ip=ip.trim();
String mac=new String(request.getParameter("mac").getBytes("ISO-8859-1"));
mac=mac.trim();
String users=new String(request.getParameter("users").getBytes("ISO-8859-1"));
users=users.trim();
String computer=new String(request.getParameter("computer").getBytes("ISO-8859-1"));
computer=computer.trim();
String workgroup=new String(request.getParameter("workgroup").getBytes("ISO-8859-1"));
workgroup=workgroup.trim();
String memo=new String(request.getParameter("memo").getBytes("ISO-8859-1"));
memo=memo.trim();
String jbr=new String(request.getParameter("jbr").getBytes("ISO-8859-1"));
jbr=jbr.trim();
String date1=new String(request.getParameter("date").getBytes("ISO-8859-1"));
date1=date1.trim();
try
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exception e)
{
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IP";
String user = "sa";
String password = "";
Connection con = DriverManager.getConnection(sConnStr, user, password);
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select ip,mac,users,computer,workgroup,gn,memo,jbr,date1 from IPADDRESS where 1>0";
if (!ip.equals(""))
sql=sql+" and ip='"+ip+"'";
if (!mac.equals(""))
sql=sql+" and mac='"+mac +"'";
if (!users.equals(""))
sql=sql+" and users='"+users+"'";
if (!computer.equals(""))
sql=sql+" and computer='"+computer+"'";
if (!workgroup.equals(""))
sql=sql+" and workgroup='"+workgroup+"'";
if (!memo.equals(""))
sql=sql+" and memo like '" + memo + "%'";
if (!jbr.equals(""))
sql=sql+" and jbr='"+jbr+"'";
if (!date1.equals(""))
sql=sql+" and date1='"+date1+"'";
ResultSet rs=stmt.executeQuery(sql);
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
out.print("</table>");
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(!rs.next())
//如果查询结果不为空
{
while(rs.next())
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
}
catch(SQLException ex)
{
while(ex!=null)
{
out.println("数据库异常被捕获了!");
out.println(ex.getSQLState());
out.println(ex.getMessage());
out.println(ex.getErrorCode());
ex=ex.getNextException();
}
}
out.println("</body>");
out.println("</html>");
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws IOException, ServletException
{
doGet(httpservletrequest, httpservletresponse);
}
}
我把整个程序都贴出来了,大家再好好帮我看看!!!
数据库中肯定有记录,能正常显示!
取的时候是按数据库中字段顺序来取的
数据库中的字段类型全为字符型。
要按顺序取数据,中间不能遗漏
你漏了gn
?
rs.getString("gn") 没有漏啊?
只不过是查询条件中没有按gn查这一项,但显示的时候我要把他显示出来。
import javax.servlet.*;
import java.util.*;
import java.text.*;
import java.lang.*;
import java.sql.*;
import java.net.URL;
import javax.servlet.http.*;
public class searchip extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>search IP</title>");
out.println("<p align=center>IP 查询结果!</p>");
out.println("</head>");
out.println("<body>");
String ip=new String(request.getParameter("ip").getBytes("ISO-8859-1"));
ip=ip.trim();
String mac=new String(request.getParameter("mac").getBytes("ISO-8859-1"));
mac=mac.trim();
String users=new String(request.getParameter("users").getBytes("ISO-8859-1"));
users=users.trim();
String computer=new String(request.getParameter("computer").getBytes("ISO-8859-1"));
computer=computer.trim();
String workgroup=new String(request.getParameter("workgroup").getBytes("ISO-8859-1"));
workgroup=workgroup.trim();
String memo=new String(request.getParameter("memo").getBytes("ISO-8859-1"));
memo=memo.trim();
String jbr=new String(request.getParameter("jbr").getBytes("ISO-8859-1"));
jbr=jbr.trim();
String date1=new String(request.getParameter("date").getBytes("ISO-8859-1"));
date1=date1.trim();
try
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exception e)
{
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IP";
String user = "sa";
String password = "";
Connection con = DriverManager.getConnection(sConnStr, user, password);
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select ip,mac,users,computer,workgroup,gn,memo,jbr,date1 from IPADDRESS where 1>0";
if (!ip.equals(""))
sql=sql+" and ip='"+ip+"'";
if (!mac.equals(""))
sql=sql+" and mac='"+mac +"'";
if (!users.equals(""))
sql=sql+" and users='"+users+"'";
if (!computer.equals(""))
sql=sql+" and computer='"+computer+"'";
if (!workgroup.equals(""))
sql=sql+" and workgroup='"+workgroup+"'";
if (!memo.equals(""))
sql=sql+" and memo like '" + memo + "%'";
if (!jbr.equals(""))
sql=sql+" and jbr='"+jbr+"'";
if (!date1.equals(""))
sql=sql+" and date1='"+date1+"'";
ResultSet rs=stmt.executeQuery(sql);
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
out.print("</table>");
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(!rs.next())
//如果查询结果不为空
{
while(rs.next())
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
}
catch(SQLException ex)
{
while(ex!=null)
{
out.println("数据库异常被捕获了!");
out.println(ex.getSQLState());
out.println(ex.getMessage());
out.println(ex.getErrorCode());
ex=ex.getNextException();
}
}
out.println("</body>");
out.println("</html>");
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws IOException, ServletException
{
doGet(httpservletrequest, httpservletresponse);
}
}
我把整个程序都贴出来了,大家再好好帮我看看!!!
数据库中肯定有记录,能正常显示!
取的时候是按数据库中字段顺序来取的
数据库中的字段类型全为字符型。
要按顺序取数据,中间不能遗漏
你漏了gn
?
rs.getString("gn") 没有漏啊?
只不过是查询条件中没有按gn查这一项,但显示的时候我要把他显示出来。
#10
if(!rs.next())
改成
if(rs.next())
改成
if(rs.next())
#11
if(rs.next()){
do{
//your code
}while(rs.next());
}else{
// no record
}
do{
//your code
}while(rs.next());
}else{
// no record
}
#12
你把最后生成的SQL先打印出来看看,不就知道错在哪了???
#13
你现在这样写是是不是有时会报nullpointer错误呀,当该页面没有接收到ip,mac,users,computer,workgroup,memo,jbr,date1任何一个参数时,你直接调用equals会报错的,
建议如下修改
if (ip!=null && !ip.equals(""))
^_^
建议如下修改
if (ip!=null && !ip.equals(""))
^_^
#14
将SQL语句打印出来,然后在数据库工具中执行一下!
#15
按照bubblebird(小鳥)兄长的说法:
我改了程序:
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(rs.next())
//如果查询结果不为空
{
do
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}while(rs.next());
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
现在有了进步,有的能查出结果,有的查不出结果,原因????
我改了程序:
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(rs.next())
//如果查询结果不为空
{
do
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}while(rs.next());
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
现在有了进步,有的能查出结果,有的查不出结果,原因????
#16
你调用了两次rs.next(),所以数据是隔一条显示一条
#17
if (!ip.equals(""))
改为:
if ((ip!=null) && (ip.compareTo("")!=0))
改为:
if ((ip!=null) && (ip.compareTo("")!=0))
#18
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
while(rs.next())
//如果查询结果不为空
{
table_string= table_string+"<tr><td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td></tr>";
}
table_string=table_string+"</table>";
out.println(table_string);
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
while(rs.next())
//如果查询结果不为空
{
table_string= table_string+"<tr><td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td></tr>";
}
table_string=table_string+"</table>";
out.println(table_string);
#19
楼主上面的有错,将
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
改为
String table_string = "";
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
改为
String table_string = "";
#20
可能出错的原因:
1.数据库中没有记录。
2.所有的参数用request.getParameter取出后检查是否为null
3.数据库中字段是否为定长字符串
检查的方法,在这句
ResultSet rs=stmt.executeQuery(sql);
之前加上
out.print(sql);
1.数据库中没有记录。
2.所有的参数用request.getParameter取出后检查是否为null
3.数据库中字段是否为定长字符串
检查的方法,在这句
ResultSet rs=stmt.executeQuery(sql);
之前加上
out.print(sql);
#21
是否存在汉字问题,当获取的条件参数全是????时,当然没有符合此条件的数据库记录了
#22
谢谢大家,问题终于搞定了。
调试的日子很难熬,刚开始接触,总是按照书上的例子执行,可书上却有很多很多的错误,一开始无法发现,等发现了错误,回过头来真想骂骂那本书,可毕竟它又给我很多有用的东东。
谢谢csdn,再次谢谢大家。
调试的日子很难熬,刚开始接触,总是按照书上的例子执行,可书上却有很多很多的错误,一开始无法发现,等发现了错误,回过头来真想骂骂那本书,可毕竟它又给我很多有用的东东。
谢谢csdn,再次谢谢大家。
#23
也可能有汉字的问题,建议楼主多用try...catch和out.print
#24
谢谢小鸟,我已经改过了
String t1 = new String(rs.getString("ip").getBytes("ISO-8859-1"));
…… ……
结贴!!!
String t1 = new String(rs.getString("ip").getBytes("ISO-8859-1"));
…… ……
结贴!!!
#1
if(!rs.next()){}
//上面的这个条件判断完全没有必要
while(rs.next())
{}
就可以了
if (ip!="")
if (mac!="")
........
-->
if(!ip.equals(""))
if(!mac.equals(""))
.....
//上面的这个条件判断完全没有必要
while(rs.next())
{}
就可以了
if (ip!="")
if (mac!="")
........
-->
if(!ip.equals(""))
if(!mac.equals(""))
.....
#2
改过了,还是没有结果
无论查询是否有结果,显示的都是:
IP地址 MAC地址 用户名 计算机名 工作组 功能 备注 经办人 经办日期
帮帮忙!!!
无论查询是否有结果,显示的都是:
IP地址 MAC地址 用户名 计算机名 工作组 功能 备注 经办人 经办日期
帮帮忙!!!
#3
数据库有没有记录?
取的时候是不是按数据库中字段顺序来取的?
注意字段类型!
或许就没有满足条件的记录
sql=sql+" and memo like '" + memo + "%'";
---》
sql=sql+" and memo like '%" + memo + "%'";
取的时候是不是按数据库中字段顺序来取的?
注意字段类型!
或许就没有满足条件的记录
sql=sql+" and memo like '" + memo + "%'";
---》
sql=sql+" and memo like '%" + memo + "%'";
#4
要按顺序取数据,中间不能遗漏
你漏了gn
你漏了gn
#5
估计是 没有记录吧。
你把里面的out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");改成:
out.println("<td><p align=center><font color=red>对不起,没有您要的信息!</font></p></td></tr></table>");
看是否显示此提示。
你把里面的out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");改成:
out.println("<td><p align=center><font color=red>对不起,没有您要的信息!</font></p></td></tr></table>");
看是否显示此提示。
#6
首先把最基本的错误改掉:
if (ip!="") --> if (!ip.equals(""))
if (ip!="") --> if (!ip.equals(""))
#7
另外,请不要将那么多的页面HTML在java中输出,建议你学习一下MVC架构,
#8
控制台有没有错误信息?
#9
import java.io.*;
import javax.servlet.*;
import java.util.*;
import java.text.*;
import java.lang.*;
import java.sql.*;
import java.net.URL;
import javax.servlet.http.*;
public class searchip extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>search IP</title>");
out.println("<p align=center>IP 查询结果!</p>");
out.println("</head>");
out.println("<body>");
String ip=new String(request.getParameter("ip").getBytes("ISO-8859-1"));
ip=ip.trim();
String mac=new String(request.getParameter("mac").getBytes("ISO-8859-1"));
mac=mac.trim();
String users=new String(request.getParameter("users").getBytes("ISO-8859-1"));
users=users.trim();
String computer=new String(request.getParameter("computer").getBytes("ISO-8859-1"));
computer=computer.trim();
String workgroup=new String(request.getParameter("workgroup").getBytes("ISO-8859-1"));
workgroup=workgroup.trim();
String memo=new String(request.getParameter("memo").getBytes("ISO-8859-1"));
memo=memo.trim();
String jbr=new String(request.getParameter("jbr").getBytes("ISO-8859-1"));
jbr=jbr.trim();
String date1=new String(request.getParameter("date").getBytes("ISO-8859-1"));
date1=date1.trim();
try
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exception e)
{
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IP";
String user = "sa";
String password = "";
Connection con = DriverManager.getConnection(sConnStr, user, password);
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select ip,mac,users,computer,workgroup,gn,memo,jbr,date1 from IPADDRESS where 1>0";
if (!ip.equals(""))
sql=sql+" and ip='"+ip+"'";
if (!mac.equals(""))
sql=sql+" and mac='"+mac +"'";
if (!users.equals(""))
sql=sql+" and users='"+users+"'";
if (!computer.equals(""))
sql=sql+" and computer='"+computer+"'";
if (!workgroup.equals(""))
sql=sql+" and workgroup='"+workgroup+"'";
if (!memo.equals(""))
sql=sql+" and memo like '" + memo + "%'";
if (!jbr.equals(""))
sql=sql+" and jbr='"+jbr+"'";
if (!date1.equals(""))
sql=sql+" and date1='"+date1+"'";
ResultSet rs=stmt.executeQuery(sql);
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
out.print("</table>");
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(!rs.next())
//如果查询结果不为空
{
while(rs.next())
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
}
catch(SQLException ex)
{
while(ex!=null)
{
out.println("数据库异常被捕获了!");
out.println(ex.getSQLState());
out.println(ex.getMessage());
out.println(ex.getErrorCode());
ex=ex.getNextException();
}
}
out.println("</body>");
out.println("</html>");
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws IOException, ServletException
{
doGet(httpservletrequest, httpservletresponse);
}
}
我把整个程序都贴出来了,大家再好好帮我看看!!!
数据库中肯定有记录,能正常显示!
取的时候是按数据库中字段顺序来取的
数据库中的字段类型全为字符型。
要按顺序取数据,中间不能遗漏
你漏了gn
?
rs.getString("gn") 没有漏啊?
只不过是查询条件中没有按gn查这一项,但显示的时候我要把他显示出来。
import javax.servlet.*;
import java.util.*;
import java.text.*;
import java.lang.*;
import java.sql.*;
import java.net.URL;
import javax.servlet.http.*;
public class searchip extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>search IP</title>");
out.println("<p align=center>IP 查询结果!</p>");
out.println("</head>");
out.println("<body>");
String ip=new String(request.getParameter("ip").getBytes("ISO-8859-1"));
ip=ip.trim();
String mac=new String(request.getParameter("mac").getBytes("ISO-8859-1"));
mac=mac.trim();
String users=new String(request.getParameter("users").getBytes("ISO-8859-1"));
users=users.trim();
String computer=new String(request.getParameter("computer").getBytes("ISO-8859-1"));
computer=computer.trim();
String workgroup=new String(request.getParameter("workgroup").getBytes("ISO-8859-1"));
workgroup=workgroup.trim();
String memo=new String(request.getParameter("memo").getBytes("ISO-8859-1"));
memo=memo.trim();
String jbr=new String(request.getParameter("jbr").getBytes("ISO-8859-1"));
jbr=jbr.trim();
String date1=new String(request.getParameter("date").getBytes("ISO-8859-1"));
date1=date1.trim();
try
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exception e)
{
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=IP";
String user = "sa";
String password = "";
Connection con = DriverManager.getConnection(sConnStr, user, password);
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select ip,mac,users,computer,workgroup,gn,memo,jbr,date1 from IPADDRESS where 1>0";
if (!ip.equals(""))
sql=sql+" and ip='"+ip+"'";
if (!mac.equals(""))
sql=sql+" and mac='"+mac +"'";
if (!users.equals(""))
sql=sql+" and users='"+users+"'";
if (!computer.equals(""))
sql=sql+" and computer='"+computer+"'";
if (!workgroup.equals(""))
sql=sql+" and workgroup='"+workgroup+"'";
if (!memo.equals(""))
sql=sql+" and memo like '" + memo + "%'";
if (!jbr.equals(""))
sql=sql+" and jbr='"+jbr+"'";
if (!date1.equals(""))
sql=sql+" and date1='"+date1+"'";
ResultSet rs=stmt.executeQuery(sql);
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
out.print("</table>");
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(!rs.next())
//如果查询结果不为空
{
while(rs.next())
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
}
catch(SQLException ex)
{
while(ex!=null)
{
out.println("数据库异常被捕获了!");
out.println(ex.getSQLState());
out.println(ex.getMessage());
out.println(ex.getErrorCode());
ex=ex.getNextException();
}
}
out.println("</body>");
out.println("</html>");
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws IOException, ServletException
{
doGet(httpservletrequest, httpservletresponse);
}
}
我把整个程序都贴出来了,大家再好好帮我看看!!!
数据库中肯定有记录,能正常显示!
取的时候是按数据库中字段顺序来取的
数据库中的字段类型全为字符型。
要按顺序取数据,中间不能遗漏
你漏了gn
?
rs.getString("gn") 没有漏啊?
只不过是查询条件中没有按gn查这一项,但显示的时候我要把他显示出来。
#10
if(!rs.next())
改成
if(rs.next())
改成
if(rs.next())
#11
if(rs.next()){
do{
//your code
}while(rs.next());
}else{
// no record
}
do{
//your code
}while(rs.next());
}else{
// no record
}
#12
你把最后生成的SQL先打印出来看看,不就知道错在哪了???
#13
你现在这样写是是不是有时会报nullpointer错误呀,当该页面没有接收到ip,mac,users,computer,workgroup,memo,jbr,date1任何一个参数时,你直接调用equals会报错的,
建议如下修改
if (ip!=null && !ip.equals(""))
^_^
建议如下修改
if (ip!=null && !ip.equals(""))
^_^
#14
将SQL语句打印出来,然后在数据库工具中执行一下!
#15
按照bubblebird(小鳥)兄长的说法:
我改了程序:
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(rs.next())
//如果查询结果不为空
{
do
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}while(rs.next());
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
现在有了进步,有的能查出结果,有的查不出结果,原因????
我改了程序:
String table_string="<table border='1' bordercolor='blue' style='color:block' ><tr>";
if(rs.next())
//如果查询结果不为空
{
do
{
table_string= table_string+"<td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td>";
}while(rs.next());
table_string=table_string+"</tr></table>";
out.println(table_string);
}
else
{
out.println("<p align=center><font color=red>对不起,没有您要的信息!</font></p>");
}
现在有了进步,有的能查出结果,有的查不出结果,原因????
#16
你调用了两次rs.next(),所以数据是隔一条显示一条
#17
if (!ip.equals(""))
改为:
if ((ip!=null) && (ip.compareTo("")!=0))
改为:
if ((ip!=null) && (ip.compareTo("")!=0))
#18
out.print("<table border='1' bordercolor='blue' style='color:block' >");
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
while(rs.next())
//如果查询结果不为空
{
table_string= table_string+"<tr><td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td></tr>";
}
table_string=table_string+"</table>";
out.println(table_string);
out.print("<tr><td>");
out.print("IP地址");
out.print("</td><td>");
out.print("MAC地址");
out.print("</td><td>");
out.print("用户名");
out.print("</td><td>");
out.print("计算机名");
out.print("</td><td>");
out.print("工作组");
out.print("</td><td>");
out.print("功能");
out.print("</td><td>");
out.print("备注");
out.print("</td><td>");
out.print("经办人");
out.print("</td><td>");
out.print("经办日期");
out.print("</td></tr>");
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
while(rs.next())
//如果查询结果不为空
{
table_string= table_string+"<tr><td>"+
"<a href=result?mode="+
rs.getString("ip")+
">"+
rs.getString("ip")+
"</a></td><td>"+
rs.getString("mac")+
"</td><td>"+
rs.getString("users")+
"</td><td>"+
rs.getString("computer")+"</td><td>"+
rs.getString("workgroup")+"</td><td>"+
rs.getString("gn")+"</td><td>"+
rs.getString("memo")+"</td><td>"+
rs.getString("jbr")+"</td><td>"+
rs.getString("date1")+"</td></tr>";
}
table_string=table_string+"</table>";
out.println(table_string);
#19
楼主上面的有错,将
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
改为
String table_string = "";
String table_string="<table border='1' bordercolor='blue' style='color:block' >";
改为
String table_string = "";
#20
可能出错的原因:
1.数据库中没有记录。
2.所有的参数用request.getParameter取出后检查是否为null
3.数据库中字段是否为定长字符串
检查的方法,在这句
ResultSet rs=stmt.executeQuery(sql);
之前加上
out.print(sql);
1.数据库中没有记录。
2.所有的参数用request.getParameter取出后检查是否为null
3.数据库中字段是否为定长字符串
检查的方法,在这句
ResultSet rs=stmt.executeQuery(sql);
之前加上
out.print(sql);
#21
是否存在汉字问题,当获取的条件参数全是????时,当然没有符合此条件的数据库记录了
#22
谢谢大家,问题终于搞定了。
调试的日子很难熬,刚开始接触,总是按照书上的例子执行,可书上却有很多很多的错误,一开始无法发现,等发现了错误,回过头来真想骂骂那本书,可毕竟它又给我很多有用的东东。
谢谢csdn,再次谢谢大家。
调试的日子很难熬,刚开始接触,总是按照书上的例子执行,可书上却有很多很多的错误,一开始无法发现,等发现了错误,回过头来真想骂骂那本书,可毕竟它又给我很多有用的东东。
谢谢csdn,再次谢谢大家。
#23
也可能有汉字的问题,建议楼主多用try...catch和out.print
#24
谢谢小鸟,我已经改过了
String t1 = new String(rs.getString("ip").getBytes("ISO-8859-1"));
…… ……
结贴!!!
String t1 = new String(rs.getString("ip").getBytes("ISO-8859-1"));
…… ……
结贴!!!