Java - Como solucionar?+Can not issue SELECT via executeU

 
Vista:

Como solucionar?+Can not issue SELECT via executeU

Publicado por Programador (1 intervención) el 07/10/2009 21:30:17
Hola, tengo un beans que es para ocuparlo como una herramienta sql , me permite realizar, select update e insert, delete, pero siempre consigo este error en la parte del bean.
Otra cosa, cuando hago un insert, update o delete el programa funciona sin problemas, pero si realizo un select consigo el error.

Como puede solucionar ese problema? y por que consigo ese error?
gracias

Este error consigo y es en la linea de mi archivo bean
Código:

Error Sql
java.sql.SQLException:
Can not issue SELECT via executeUpdate().

esta es linea que consigue el error:

else {
int i = s.executeUpdate(sql);
result.append("Record(s) affected: " + i);
}

Este es el java bean completo
Código:

package miguel.brainysoftware.web;

import java.sql.*;
import com.mysoftware.java.StringUtil;

public class SQLToolBean {
private String sql = "";

private String userName = "";
private String password = "";
private String connectionUrl;

public String getSql() {
return StringUtil.encodeHtmlTag(sql);
}
public void setSql(String sql) {
if (sql != null)
this.sql = sql;
}
public void setUserName(String userName) {
if (userName != null)
this.userName = userName;
}
public String getUserName() {
return StringUtil.encodeHtmlTag(userName);
}
public void setPassword(String password) {
if (password != null)
this.password = password;

}
public String getPassword() {
return StringUtil.encodeHtmlTag(password);
}
public void setConnectionUrl(String url) {
connectionUrl = url;
}
public String getResult() {
if (sql == null || sql.equals(""))
return "";
StringBuffer result = new StringBuffer(1024);
try {
Connection con = DriverManager.getConnection(connectionUrl,
userName,
password);
Statement s = con.createStatement();
if (sql.toUpperCase().startsWith("SELECT")) {
result.append("<TABLE BORDER=1>");
ResultSet rs = s.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
// Write table headings
int columnCount = rsmd.getColumnCount();
result.append("<TR>");
for (int i=1; i<=columnCount; i++) {
result.append("<TD><B>" + rsmd.getColumnName(i) +
"</B></TD>\n");
}
result.append("</TR>");
while (rs.next()) {
result.append("<TR>");
for (int i=1; i<=columnCount; i++) {
result.append("<TD>" +
StringUtil.encodeHtmlTag(rs.getString(i)) +
"</TD>" );
}
result.append("</TR>");
}
rs.close();
result.append("</TABLE>");
}
else {
int i = s.executeUpdate(sql);
result.append("Record(s) affected: " + i);
}
s.close();
con.close();
result.append("</TABLE>");
}
catch (SQLException e) {
result.append("<B>Error Sql</B>");
result.append("<BR>");
result.append(e.toString());
}
catch (Exception e) {
result.append("<B>Error</B>");
result.append("<BR>");
result.append(e.toString());
}
return result.toString();

}
}
********************************************************************************************************
En este jsp ingreso el usuario y password de la base de datos
Código:

<HTML>
<HEAD>
<TITLE>Login Page</TITLE>
</HEAD>
<BODY>
<CENTER>
<FORM METHOD=POST ACTION=SQLTool.jsp>
<TABLE>
<TR>
<TD>User Name:</TD>
<TD><INPUT TYPE=TEXT NAME=userName></TD>
</TR>
<TR>
<TD>Password:</TD>
<TD><INPUT TYPE=PASSWORD NAME=password></TD>
</TR>
<TR>
<TD><INPUT TYPE=RESET></TD>
<TD><INPUT TYPE=SUBMIT VALUE="Login"></TD>
</TR>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>

*********************************************************************************************************
Este es mi archivo jsp que recibe el usuario, password y realiza las sentencias sql ocupando el beans.

<jsp:useBean id="theBean" class="miguel.brainysoftware.web.SQLToolBean">
<%
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (Exception e) {
out.println("No carga:"+e.toString());
}
%>
</jsp:useBean>
<jsp:setProperty name="theBean" property="userName"/>
<jsp:setProperty name="theBean" property="password"/>
<jsp:setProperty name="theBean" property="connectionUrl"
value="jdbc:mysql://localhost/prueba"/>
<jsp:setProperty name="theBean" property="sql"/>
<HTML>
<HEAD>
<TITLE>SQL Tool</TITLE>
</HEAD>
<BODY>
<BR><H2>SQL Tool</H2>
<BR>Please type your SQL statement in the following box.
<BR>
<BR><FORM METHOD=POST>
<INPUT TYPE=HIDDEN NAME=userName VALUE="<jsp:getProperty
name="theBean"
property="userName"/>">
<INPUT TYPE=HIDDEN NAME=password VALUE="<jsp:getProperty
name="theBean"
property="password"/>">
<TEXTAREA NAME=sql COLS=80 ROWS=8>
<jsp:getProperty name="theBean" property="sql"/>
</TEXTAREA>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
<BR>
<HR>
<BR>
<%= theBean.getResult() %>
</BODY>
</HTML>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como solucionar?+Can not issue SELECT via execu

Publicado por axel (1 intervención) el 08/10/2009 08:28:47
Si te montas el plugin para eclipse de lady4j te resuelve ese tipo de fallos en menos de 5 segundos.

Se produce debido a que para lanzar una select necesitas hacer executeQuery, no executeUpdate.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar