Avatar billede bodhisatva Nybegynder
20. august 2002 - 17:11 Der er 5 kommentarer og
3 løsninger

to db-forespørgsler

hvorfor er det ikke muligt at have to db-forespørgsler på den samme side? Mit forslag ser således ud:

<%@ page language="java" import="java.sql.* java.util.* java.io.* java.util.Date.* javax.*" %>
<jsp:useBean name="db" id="db" class="DbHandler" scope="session"/>

<html>
<head>
<basefont face="Arial">
</head>
<body>

<table border="1" cellspacing="5" cellpadding="5">
<tr>
<td><b>Variable</b></td>
<td><b>Value</b></td>
</tr>

<tr>
<td>Request protocol</td>
<td>
<%
String protocol = request.getProtocol();
out.println(request.getProtocol());
%>
</td>
</tr>

<tr>
<td>Hostname</td>
<td>
<%
String hostname = request.getServerName();
out.println(request.getServerName());
%>
</td>
</tr>

<tr>
<td>Port</td>
<td>
<%
int serverport = request.getServerPort();
//out.println(String.charAt(request.getServerPort()));
%>
</td>
</tr>

<tr>
<td>Remote username</td>
<td>
<%
// username if using HTTP authentication
// null if no authentication
String remoteusername = request.getRemoteUser();
out.println(request.getRemoteUser());
%>
</td>
</tr>

<tr>
<td>Remote address</td>
<td>
<%
// get IP address of client
String ipaddress = request.getRemoteAddr();
out.println(request.getRemoteAddr());
%>
</td>
</tr>

<tr>
<td>Client browser</td>
<td>
<%
// client browser identification
String browser = request.getHeader("User-Agent");
out.println(request.getHeader("User-Agent"));
%>
</td>
</tr>

<tr>
<td>Datp</td>
<td>

</td>
</tr>
</table>


<%

db.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:test","","");
int rowsAffected  = db.doUpdate("insert into test (protocol,hostname,remoteusername,ipaddress,browser) values('" + protocol  + "','" + hostname  + "','" + remoteusername  + "','" + ipaddress + "','" + browser + "')");

if(rowsAffected == 1)
{
ResultSet rs = db.doQuery("select max (id) from test");

while(rs.next()){
String id = rs.getString(id);

%>

velkommen besøgende nummer:
<% id %>
---> til mit enorme site
<%
}
else
{
%>
<h1>Sorry, men dit indlæg blev ikke opdateret... prøv igen... </h1>

<%
}
db.close();
%>
   
</BODY>
</HTML>
Avatar billede disky Nybegynder
20. august 2002 - 17:17 #1
hvad er problemmet ?
Avatar billede soelvpil Nybegynder
20. august 2002 - 19:13 #2
Fortæl hvilken fejlbesked du får, ellers har vi ikke nogen jordisk chance for at hjælpe.
Avatar billede bodhisatva Nybegynder
20. august 2002 - 19:56 #3
fejlen er:

500 Servlet Exception
Note: sun.tools.javac.Main has been deprecated.
/counter/dandomain.jsp:108: 'else' without 'if'.
else
^
/counter/dandomain.jsp:118: 'catch' without 'try'.
    } catch (java.lang.Throwable _jsp_e) {
      ^
/counter/dandomain.jsp:123: '}' expected.
  }
  ^
/counter/dandomain.jsp:125: 'try' without 'catch' or 'finally'.
  private com.caucho.java.LineMap _caucho_line_map;
  ^
/counter/dandomain.jsp:125: Statement expected.
  private com.caucho.java.LineMap _caucho_line_map;
  ^
5 errors, 1 warning



--------------------------------------------------------------------------------
Resin 2.1.2 (built Tue Jun 11 08:26:56 PDT 2002)
Avatar billede disky Nybegynder
20. august 2002 - 20:05 #4
Det er forbi du har en if hvori der åbnes en while som IKKE er afsluttet inden din else kommer, derfor kuks i antal {}'ere
prøv med:


if(rowsAffected == 1)
{
ResultSet rs = db.doQuery("select max (id) from test");

if(rs.next()){
String id = rs.getString(id);
}
%>

velkommen besøgende nummer:
<% id %>
---> til mit enorme site
<%
}
else
{
%>
<h1>Sorry, men dit indlæg blev ikke opdateret... prøv igen... </h1>

<%
}


p.s. din while kan godt være en if da den kun returnere en værdi
Avatar billede bodhisatva Nybegynder
20. august 2002 - 20:39 #5
ok, min forespørgsel ser nu således ud:

<%@ page language="java" import="java.sql.* java.util.* java.io.* java.util.Date.* javax.*" %>
<jsp:useBean name="db" id="db" class="disky.DbHandler" scope="session"/>

<html>
<head>
<basefont face="Arial">
</head>
<body>

<table border="1" cellspacing="5" cellpadding="5">
<tr>
<td><b>Variable</b></td>
<td><b>Value</b></td>
</tr>

<tr>
<td>Request protocol</td>
<td>
<%
String protocol = request.getProtocol();
out.println(request.getProtocol());
%>
</td>
</tr>

<tr>
<td>Hostname</td>
<td>
<%
String hostname = request.getServerName();
out.println(request.getServerName());
%>
</td>
</tr>

<tr>
<td>Port</td>
<td>
<%
int serverport = request.getServerPort();
//out.println(String.charAt(request.getServerPort()));
%>
</td>
</tr>

<tr>
<td>Remote username</td>
<td>
<%
// username if using HTTP authentication
// null if no authentication
String remoteusername = request.getRemoteUser();
out.println(request.getRemoteUser());
%>
</td>
</tr>

<tr>
<td>Remote address</td>
<td>
<%
// get IP address of client
String ipaddress = request.getRemoteAddr();
out.println(request.getRemoteAddr());
%>
</td>
</tr>

<tr>
<td>Client browser</td>
<td>
<%
// client browser identification
String browser = request.getHeader("User-Agent");
out.println(request.getHeader("User-Agent"));
%>
</td>
</tr>

<tr>
<td>Datp</td>
<td>

</td>
</tr>
</table>


<%

db.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:test","","");
int rowsAffected  = db.doUpdate("insert into test (protocol,hostname,remoteusername,ipaddress,browser) values('" + protocol  + "','" + hostname  + "','" + remoteusername  + "','" + ipaddress + "','" + browser + "')");

if(rowsAffected == 1)
{
ResultSet rs = db.doQuery("select max (id) from test");

while(rs.next()){
String id = rs.getString(id);
}
%>

velkommen besøgende nummer:
<% id %>
---> til mit enorme site
<%
}
else
{
%>
<h1>Sorry, men dit indlæg blev ikke opdateret... prøv igen... </h1>

<%
}
db.close();
%>
   
</BODY>
</HTML>


-------> men får stadig denne fejl:

500 Servlet Exception
Note: sun.tools.javac.Main has been deprecated.
/counter/dandomain.jsp:99: Variable id may not have been initialized.
String id = rs.getString(id);
                        ^
/counter/dandomain.jsp:104: Class _counter.id not found.
      id
      ^
/counter/dandomain.jsp:105: Invalid declaration.
      pageContext.write(_jsp_string9, 0, _jsp_string9.length);
                      ^
Note: c:\www\WEB-INF\work\_counter\_dandomain__jsp.java uses or overrides
a deprecated API.  Recompile with "-deprecation" for details.
3 errors, 2 warnings



--------------------------------------------------------------------------------
Resin 2.1.2 (built Tue Jun 11 08:26:56 PDT 2002)
Avatar billede soelvpil Nybegynder
20. august 2002 - 22:24 #6
Prøv at sætte

String id = 1;

lige før din db.open.

Og så skal linjen

String id = rs.getString(id);

i stedet rettes til

id = rs.getString("id");

Endelig skal

<% id %>

rettes til

<%= id %>
Avatar billede europe Nybegynder
21. august 2002 - 08:33 #7
Din String id skal du intialiserer uden for while løkken ellers kan du ikke tilgå den senere

String id = "";
while(rs.next())
{
  id = rs.getString(id);
}
Avatar billede bodhisatva Nybegynder
21. august 2002 - 12:59 #8
Tusind TAK! Min kode ser efterhånden nogenlunde således ud:

<%@ page language="java" import="java.sql.* java.util.* java.io.* javax.* " %>
<jsp:useBean name="db" id="db" class="DbHandler" scope="session"/>

<html>
<head>
<basefont face="Arial">
</head>
<body>

<table border="1" cellspacing="5" cellpadding="5">
<tr>
<td><b>Variable</b></td>
<td><b>Value</b></td>
</tr>

<tr>
<td>Request protocol</td>
<td>
<%
String protocol = request.getProtocol();
out.println(request.getProtocol());
%>
</td>
</tr>

<tr>
<td>Hostname</td>
<td>
<%
String hostname = request.getServerName();
out.println(request.getServerName());
%>
</td>
</tr>

<tr>
<td>Port</td>
<td>
<%
int serverport = request.getServerPort();
//out.println(String.charAt(request.getServerPort()));
%>
</td>
</tr>

<tr>
<td>Remote username</td>
<td>
<%
// username if using HTTP authentication
// null if no authentication
String remoteusername = request.getRemoteUser();
out.println(request.getRemoteUser());
%>
</td>
</tr>

<tr>
<td>Remote address</td>
<td>
<%
// get IP address of client
String ipaddress = request.getRemoteAddr();
out.println(request.getRemoteAddr());
%>
</td>
</tr>

<tr>
<td>Client browser</td>
<td>
<%
// client browser identification
String browser = request.getHeader("User-Agent");
out.println(request.getHeader("User-Agent"));
%>
</td>
</tr>

<tr>
<td>Datp</td>
<td>
<%
dato = new java.util.Date();
datoenEr = dato.getDate();
%>
</td>
</tr>
</table>


<%
int id = 1;

db.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:test","","");
int rowsAffected  = db.doUpdate("insert into test (protocol,hostname,remoteusername,ipaddress,browser) values('" + protocol  + "','" + hostname  + "','" + remoteusername  + "','" + ipaddress + "','" + browser + "')");

if(rowsAffected == 1)
{
ResultSet rs = db.doQuery("SELECT MAX (id) FROM test");

while(rs.next()){
id = rs.getInt(id);
}
%>

velkommen besøgende nummer:
<%= id %>
---> på mit enorme site og <%= datoenEr %> er datoen.
<%
}
else
{
%>
<h1>Sorry, men dit indlæg blev ikke opdateret... prøv igen... </h1>

<%
}
db.close();
%>
   
</BODY>
</HTML>

håber point-fordelingen er tilfredsstillende ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester