最近做了个留言板,模仿QQ空间、CSDN博客里的"回复"功能。于是我建了2个表:一个是留言表,一个是回复表。可以对同一留言进行多用户、多次回复。根据某条留言的ID,把对该留言的所有回复都存入一张回复表。这个功能已经实现了。剩下的工作就是从这2张表中取出需要的字段值。需要对2个表中的数据进行查询。在命令行下对MySQL进行多表查询我会做,就是这个可能需要如下操作:
String sqla = "select id,user,title,message,date,qq from liuyaninfo";
String sqlb = "select msgid,remsg,user,date from remsginfo";
ps1=con.createStatement();
ps2=con.createStatement();
rs1=ps1.executeQuery(sqla);
rs2=ps2.executeQuery(sqlb);
while(rs1.next()){
String id = rs1.getString("id");
String user = rs1.getString("user");
String title = rs1.getString("title");
String message = rs1.getString("message");
String date = rs1.getString("date");
String qq = rs1.getString("qq");
String remsgid=rs2.getString("msgid");
.....
...........
.....
if(id.equals(remsgid)){
while(rs2.next()){
String remsgdate=rs2.getString("date");
String remsguser=rs2.getString("user");
String remsg=rs2.getString("remsg");
out.println("<font color=red>"+remsguser+"回复于"+remsgdate+"</font>");
out.println("<br>"+remsg);
}
}
......结果输入的异常是:java.sql.SQLException 就这么多!~
谁以前做过JSP页面的多表查询?
String sqla = "select id,user,title,message,date,qq from liuyaninfo";
String sqlb = "select msgid,remsg,user,date from remsginfo";
ps1=con.createStatement();
ps2=con.createStatement();
rs1=ps1.executeQuery(sqla);
rs2=ps2.executeQuery(sqlb);
while(rs1.next()){
String id = rs1.getString("id");
String user = rs1.getString("user");
String title = rs1.getString("title");
String message = rs1.getString("message");
String date = rs1.getString("date");
String qq = rs1.getString("qq");
String remsgid=rs2.getString("msgid");
.....
...........
.....
if(id.equals(remsgid)){
while(rs2.next()){
String remsgdate=rs2.getString("date");
String remsguser=rs2.getString("user");
String remsg=rs2.getString("remsg");
out.println("<font color=red>"+remsguser+"回复于"+remsgdate+"</font>");
out.println("<br>"+remsg);
}
}
......结果输入的异常是:java.sql.SQLException 就这么多!~
谁以前做过JSP页面的多表查询?
解决方案 »
- myeclipse编译 web浏览器无法显示jsp<%%>里面的内容
- 关于tomcat 虚拟目录 的疑问(MyEclipse)
- 布置portlet错误error listenerStart(使用绑定tomcat6和liferay-plugins-sdk-5.2.3)
- 问一个jsp里面基础的问题
- 一个低级问题,在线给分
- 如果一个MAP中的VALUE值是整形的(如,1,2,3,4),那怎么根据它的VALUE对这个MAP进行排序?请指教?
- 怎么在下个.sp页面获取上个JSP的值
- IBM WebSphere安装配置好后域名访问全显示全是JSP源代码
- 大家帮帮我,高分奉上!!!
- JSP报错。 org.apache.jasper.JasperException: Unable to compile class for JSP
- TOMCAT服务启动时产生的错误是什么原因?如何解决?
- action不起作用
String sqla = "select L.id,L.user,L.title,L.message,L.date,L.qq,R.remsg,R.user,R.date from liuyaninfo L ,remsginfo R where id = msgid";
或者是你的查询中的事务分界的问题
rs1=ps1.executeQuery(sqla);
rs2=ps2.executeQuery(sqlb);是不是一个事务啊?具体的Exception代码??
没用框架。
其中一种可以这样来写
留言1
回复1
回复2
String sqla = "select id,user,title,message,date,qq from liuyaninfo";
ps1=con.createStatement();
ps2=con.createStatement();
rs1=ps1.executeQuery(sqla);
while(rs1.next()){
out.println(rs1.getString("title"));
String sqlb="select msgid,remsg,user,date from remsginfo where msgid="+rs1.getString("id");
rs2=ps2.executeQuery(sqlb);
while(rs2.next()){
out.println(rs2.getString("remsg"));
}
}
留言表:id user title message date qq
回复表:id msgid remsg user date
有刚又写了个例子:<%
Connection con;
Statement ps1,ps2;
ResultSet rs1,rs2;
try{Class.forName("com.mysql.jdbc.Driver").newInstance();
String uri ="jdbc:mysql://localhost:3306/liuyan?useUnicode=true&characterEncoding=utf-8";
con = DriverManager.getConnection(uri,"root","tdy218");
String sqla = "select user from liuyaninfo";
String sqlb = "select msgid from remsginfo";
ps1=con.createStatement();
ps2=con.createStatement();
rs1=ps1.executeQuery(sqla);
rs2=ps2.executeQuery(sqlb);
while(rs1.next()){
String userid = rs1.getString("user");
out.print("<br>"+userid);
while(rs2.next()){
String msgid=rs2.getString("msgid");
out.print("<br>"+msgid);
}
}
rs1.close();
rs2.close();
con.close();
}
catch(Exception e){out.print(e);}
%>运行后出来的结果是:
202.102.240.65 //来自于表liuyaninfo
10 //来自于表remsginfo
10 //来自于表remsginfo
132.218.33.5 //来自于表liuyaninfo
10.255.11.77 ...下同...
10.255.11.77
127.0.0.1
127.0.0.1
127.0.0.1
10.255.9.234
我把MySQL重装了一遍,还装在原来的位置,可原来的数据文件(.opt和.frm)文件在新装的数据库中看不到,请问这些旧的数据文件如何导入到新的数据库那?