JSP + SQLServer

2 respostas
jMarcel

Pessoal,

tenho a seguinte dúvida:

Via JSP, chamo uma stored procedure que retorna uma consulta (uma tabela com 11 colx112 linhas) que é gerada dinamicamente no SQLServer.

Só preciso mostrar os resultados em tela.

Já fiz c/ DAO+Netbeans, mas por questões 'administrativas', preciso fazer conforme o padrão abaixo, ou seja, as ferramentas que tenho a diposição são: Notepad++ e SQLServer2008.

A parte do SQLServer já está ok (é apenas um SELECT, na verdade, que futuramente colocarei alguns parâmetros).

Como é minha 1ª vez, estou confuso pq o código jsp+html está todo misturado e espalhado, ainda não me familiarizei totalmente com essa forma (seria bem melhor linkedlist etc, mas aqui só tenho o arquivo jsp que acessa o SQLServer diretamente, nada de D.Pattern DAO, Factory, classes java p/ separar/arquiteturar um MVC etc).

Eis o código que fiz baseado no que fazem por aqui:

<%response.setHeader("Cache-Control","no-cache");%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%
 session.setAttribute("Chave", "F1234567");
 session.setAttribute("JDBC", "jdbc:sqlserver://meuEndereço;instanceName=SQLEXPRESS;database=ENCAD2011;user=sa;password=psw");
 if(session.getAttribute("Chave")==null)
   {
%>
<HTML>
 Aguarde...
</HTML>
<SCRIPT>
 parent.location.href="/uar/index.jsp";
</SCRIPT>
<%	
   }
 else
   {
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  
  Connection cn = DriverManager.getConnection(session.getAttribute("JDBC").toString());
    
  PreparedStatement db = cn.prepareStatement("{call ENCAD2011.dbo.uspVCart(?)}");
  
  db.setInt(1, Integer.parseInt(PrefDep.toString())); <!-- Seria um getInt ? visto que PrefDep é um parâmetro que não uso na minha SProc. -->
  
  ResultSet rs = db.executeQuery(); 
  
  String HTML = "";
  
<!-- Para mostrar as Colunas pensei nisso -->
  while(rs.next())
       {
	       HTML += "<TR>"
		
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C1") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C2") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C3") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C4") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C5") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C6") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C7") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C8") + "</TD>"
		        + "<TD ALIGN=LEFT    CLASS=Tot>" +  rs.getString("C9") + "</TD>"
		        + "<TD ALIGN=RIGHT   CLASS=Tot>" +  rs.getString("C10") + "</TD>"
				+ "<TD ALIGN=RIGHT   CLASS=Tot>" +  rs.getString("C11") + "</TD>"
				+ "<TD ALIGN=RIGHT   CLASS=Tot>" +  rs.getString("C12") + "</TD>"
				+ "<TD ALIGN=RIGHT   CLASS=Tot>" +  rs.getString("C13") + "</TD>"
			    + "</TR>";
		  }
		}
      
  rs.close();	
  db.close();
  cn.close();
%>
<LINK HREF="/upb/uar/principal/css/intranet.css" TYPE=text/css REL=stylesheet>
<STYLE>
 INPUT
  {width: 100%;}
 A
  {color: darkblue;}
 TABLE
  {background-color: #ffffff;
   border-color: #000000;
   border-style: solid;
   border-left-width: 2;
   border-top-width: 2;
   border-bottom-width: 2;
   border-right-width: 2;}
 TH
  {background-color: #999999;
   border-color: #ffffff;
   border-style: solid;
   border-left-width: 0;
   border-top-width: 1;
   border-bottom-width: 0;
   border-right-width: 1;
   color: #ffffff;
   font-family: tahoma;
   font-size: 11;
   height: 20;}
 TD
  {background-color: #ededed;
   border-color: #ffffff;
   border-style: solid;
   border-left-width: 0;
   border-top-width: 0;
   border-bottom-width: 1;
   border-right-width: 1;
   color: #darkblue;
   font-family: tahoma;
   font-size: 11;
   height: 20;}
 INPUT
  {background-color: #ededed;
   border-color: #ffffff;
   border-style: solid;
   border-left-width: 1;
   border-top-width: 0;
   border-bottom-width: 1;
   border-right-width: 1;
   color: darkblue;
   font-family: tahoma;
   font-size: 11;
   height: 20;}
 .Tit
  {background-color: #ffffff;
   border-color: #ffffff;
   border-style: none;
   color: black;
   font-family: arial;
   font-size: 16;
   font-weight: bold;
   height: 20;}
 .Tot
  {background-color: #dadada;
   border-top-color: darkgray;
   border-bottom-color: #000000;
   border-left-color: #ffffff;
   border-right-color: #ffffff;
   border-style: solid;
   border-left-width: 1;
   border-top-width: 2;
   border-bottom-width: 2;
   border-right-width: 1;
   color: #000000;
   font-family: tahoma;
   font-size: 11;
   font-weight: normal;
   height: 20;}
</STYLE>
<HTML>
 <TITLE>Meta de Cartões - Visâo Carteira</TITLE>
 
 <BODY LEFTMARGIN=0 RIGHTMARGIN=0 TOPMARGIN=0 BOTTOMMARGIN=0
       MARGINHEIGHT=0 MARGINWIDTH=0 STYLE="margin-left: 10;margin-top: 0;">
   <BR>
   <BR><BR>

   <!-- 1) Tabela do Cabeçalho -->
   <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=98% STYLE="border-style: none;">
       <TR>
       <TD ALIGN=LEFT VALIGN=TOP WIDTH=70% CLASS="Tit" VALIGN=TOP>Ferramente Produtos X e y
	   <BR>Visão parcial</TD>
	   <TD ALIGN=RIGHT VALIGN=TOP WIDTH=30% CLASS="Tit" VALIGN=TOP>Posição em 01/07/2011</TD>
       </TR>
   </TABLE>
   
   <FONT COLOR=BLUE>
  
   <BR>[produto] = Quantidade de nºs ativos
   <BR>[Inibida] = Quantidade de  com função inibida
   <BR>[Pendente] = Quantidade de produtos pendente de entrega
   <BR>[soma] = total
   <BR>
   </FONT>
   </TABLE>
   
   <BR>
   
   <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=98% STYLE="border-style: none;">
      <%=HTML.toString()%>
   </TABLE>
   
   </FORM>
 
  </BODY>

  </HTML>
<%
   }
%>

Alguém poderia me dar um passo a passo de como fazer funcionar ?

O que eu uso para armazenar no ResultSet uma coleção de registros ? Um getInt (vide linha 27) ?
Tenho que fazer um get para cada tipo de dados/coluna da minha tabela (por ex.: p/ armazenar um tipo varchar, tenho que executar getVarchar etc ?)

Agradeço pela ajuda.

2 Respostas

A

Porque você está usando scriptless?!
Utilize algum framework MVC…dentre as inúmeras vantagens deixa o código “mais limpo”.

Sugiro que utilize um framework da apache o Wicket, ou se preferir tem também o JSF.

leoramos

alissonpedrina:
Porque você está usando scriptless?!
Utilize algum framework MVC…dentre as inúmeras vantagens deixa o código “mais limpo”.

Sugiro que utilize um framework da apache o Wicket, ou se preferir tem também o JSF.

Alisson, ele informou que tem que fazer desse jeito por questões administrativas… não tem outro jeito, por enquanto.

Mestre, ele vai te retornar um array de Object. Manipula cada linha como um array de Object[], na base do type cast.
É o que me vem à mente, agora.

Boa sorte!

Criado 4 de julho de 2011
Ultima resposta 4 de jul. de 2011
Respostas 2
Participantes 3