Jsp con SQL Server 2000

Quisiera llamar a un procedimiento almacenado, desde una JSP, y trabajar un resultset, Para poder armar un listado en la web.
Este proceso lo conozco, pero con ASP, yo lo quiero hacer con JSP.
Si tuvieras un ejemplo te lo agradecería.

1 Respuesta

Respuesta
1
Te voy a mandar un ejemplo de como puedes hacerlo, pero este ejemplo trabaja con una query, no con un procedimiento almacenado, en cualquier caso, como sabes ASP no creo que tengas problemas para llamar a un sp.
El código en cuestión es el siguiente:
<%@page import="java.sql.*;" contentType="text/html" %>
<html>
<body>
<hr>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection
("jdbc:odbc:Machines","sa", "");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select Machine_ID [ID],
MachineNumber NUMBER from active_machines");
while( rs.next() ){
out.println(rs.getString("ID") + ", " + rs.getString("NUMBER")
+ "<br>");
}
rs.close();
conn.close();
}catch(SQLException e){ out.println(e.getMessage());
}
%>
</body>
Acuérdate de crear el DSN para poder trabajar con la conexión, el nombre del DNS en este caso, como supoindras es mACHINES, con su usuario y password correspondientes.
Nada más.
Con el método executeQuery, ¿también puedo llamar a un storeprocedure? ,(es decir la cadena; ejem.: "sp_prueba 'A', 12, '" + Variable + "'")
No, con el método executeQuerty solo puedes ejecutar sentencias contra la base de datos, es como cuando en el objeto Command de ASP le pones como CommandType=AdUseText. Para poder ejecutar procedimientos almacenados desde jsp lo debes de hacer de la siguiente forma:
Así se declara la llamada al procdimiento
CallableStatement spAddCall = = con.prepareCall("{call
TestProc(?,?)}")
'Parametros de entrada y salida
spAddCall.registerOutParameter(1,Types.LONGVARCHAR);
spAddCall.setString(2,Parametro numero 2);
spAddCall.setString(3,parametro numero 3);
spAddCall.setString(4,parametro numero 4);
spAddCall.setString(5,parametro numero 5);
//Ejecutas el procedimiento
spAddCall.execute();
Nad más.
Bien amigo, te agradezco la ayuda, pero tengo una última duda.
Mira, me estoy conectando al SQLServer por JDBC-ODBC, creando un DSN, en mi ambiente de desarrollo funciona y me parece lógico porque mis páginas de prueba están alojadas en un APACHE sobre NT Server. Pero en producción el servidor WEB (APACHE - TOMCAT) se encuentra sobre LINUX y la base de datos es un SQLServer 2000 (sobre NT Server) que se encuentra geográficamente en otro lugar, como hago para conectarme por JDBC-ODBC al SQLServer si no se como crear un DSN en LINUX. Lo que intenté fue crear un archivo DSN y lo copie en una carpeta ODBC y traté de ejecutar el siguiente código:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection
("jdbc:odbc:ODBC/Machines.dsn","sa", "");
Pero la conexión no se pudo realizar, si tuvieras información al respecto, por favor ayudame.
Saludos
Sergio
Como te va todo, espero que bien, la verdad es que lo que has hecho es lo que debes de hacer, y lo único que tienes mal y por lo que no te funciona es por la forma de invocar al dsn, lo tienes que hacer de la siguiente forma:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection
("jdbc:odbc:ODBC:Machines","sa", "");
Es decir, al dsn le invocas mediante los dos puntos después de poner ODBC, y no hace falta que le pongas la extensión al archivo.
Pruébalo, ya veras como te funciona.
Recibe un saludo y suerte.
David

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas