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:
Este es el java bean completoError 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); }
Código:
En este jsp ingreso el usuario y password de la base de datospackage 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(); } }
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.
Código:
<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>