Sql-server!

Devido a minha ignorancia em jsp, como eu faço para me conectar com um banco de dados SQL_SERVER , via odbc ou diretamente?

Em asp eu faço assim:
set conn1 = server.createobject (“adodb.connection”)
conn1.open “supervia_sql”, “SUPERVIA”, “SUPERVIASQL”

E como eu faço em jsp?

Primeiro você tem que baixar o driver jdbc (reponsável pela conexão de aplicações java ao banco de dados) do site da microsoft (http://www.microsoft.com/downloads/details.aspx?FamilyID=4f8f2f01-1ed7-4c4d-8f7b-3d47969e66ae&DisplayLang=en), depois seria legal você dar uma lida no java tutorial, na parte de conexão com banco de dados (http://java.sun.com/docs/books/tutorial/jdbc/index.html), se você não estiver com pressa eu posso lhe enviar um exemplo que eu fiz em minha casa usando JSP acessando o SQL Server 2000 Personal Edition.

OI Douglas, eu posso esperar sim, se puder me enviar por e-mail será de grande ajuda

polinet-mauro@uol.com.br

poli, vc tb pode usar um driver FREE q faz conexao com o SQL Server…

chama-se JTDS e estah no sourceforge.net

ai vai um exemplo de conexao usando esse driver…

Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conJTDS = DriverManager.getConnection("jdbc:jtds:sqlserver://"servidor_IP":1433",Usuario,Senha);

falow…[/url]

Estou publicando um exemplo de conexão do Java Server Pages com o SQL Server 2000 Personal Edition (para quem me pediu por e-mail estarei enviando)
Observação: Esse exemplo é só um teste para ver se funciona a conexão com o SQL, o ideal é pegar esse código e encapsular em uma classe responsável por gerenciar a persistência de dados.

<%@page info = “teste do Douglas” %>
<%@page import=“java.sql., java.io.” %>

<%
//w2kserver é o nome do servidor
//1433 é a porta default do SQL Server
//desenv é o nome do meu database
//sa é o nome do usuário, assim como o password também
String path_banco_dados = “jdbc:microsoft:sqlserver://w2kserver:1433;DatabaseName=desenv;User=sa;Password=sa”;
String consulta = “SELECT cliente,nome FROM cliente”;

try {

   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
   Connection conn = DriverManager.getConnection(path_banco_dados);
    // retira o autocommit
   if (conn.getAutoCommit())
      conn.setAutoCommit(false);

   Statement st = conn.createStatement();
   ResultSet resultado = st.executeQuery(consulta);						
   while (resultado.next()) {
      out.println("Nome: " + resultado.getString("nome") + "&lt;BR&gt;");
      out.println("Código: " + resultado.getInt("cliente") + "&lt;BR&gt;");
  }

  resultado.close(); // fecha o resultset
  st.close();        // fecha o statement
  conn.close();      // fecha a conexão com o SQL Server

}

catch (SQLException sqle) {
     out.println("SQLException: " + sqle.getMessage());
 }

%>

Na verdade o ideal é conectar-se por datasource/pool de conexões (não precisa colocar o Class.forName … ), já fiz testes utilizando o Sun ONE Application Server 7, aí vai o código (se alguém estiver afim de saber como configurar o SQL Server junto com o Sun ONE eu escrevo um tutorial) :

<%@page info = “teste do Douglas” %>
<%@page import=“java.sql.* ,javax.sql.,javax.naming., java.io.*” %>

<%

String consulta = “SELECT cliente,nome FROM cliente”;
InitialContext ctx = new InitialContext();
DataSource ds = null;

try {

  ds = (DataSource)ctx.lookup("jdbc/mssqldesenv");
  Connection conn = ds.getConnection("sa", "sa");
  // retira o autocommit
  if (conn.getAutoCommit())
     conn.setAutoCommit(false);

  Statement st = conn.createStatement();
  ResultSet resultado = st.executeQuery(consulta);						
   while (resultado.next()) {
      out.println("Nome: " + resultado.getString("nome") + "&lt;BR&gt;");
      out.println("Código: " + resultado.getInt("cliente") + "&lt;BR&gt;");
   }

    resultado.close(); // fecha o resultset
    st.close();        // fecha o statement
    conn.close();      // fecha a conexão com o SQL Server
 }
 catch (NamingException ne) {
     out.println("NamingException " + ne.getMessage());
 }
 catch (SQLException sqle) {
     out.println("SQLException: " + sqle.getMessage());
 }

%>

Ae rbaroni
com esse driver free nao precisa de tah criada a fonte odbc nao… digo akle negocio lah do painel de controle…
Valew

Tipo nao eh uma afirmacao naum… eh uma pergunta…!!!
???

poli, seu e-mail está correto ? ele está voltando !

polinet-mauro@uol.com.br

Antes que eu me esqueça, quem baixar o driver JDBC do site da microsoft, nele vem o manual de instalação !

Se alguém estiver com dúvida na instalação, estaremos a disposição

duardor…

com o JTDS nao precisa ter ODBC configurado nao…basta colocar o .jar no classpath e pronto…

falow.

ae rbaroni
tem algum diver que eu possa usar tanto para um SGBD de windows qto um pra linux e que nao preise configurar , tipo esse jtds?
claro que sendo o mesmo SGBD… tipo o oracle que existe pra win linux…

se vc estiver usando Oracle, por ex, e fizer a conexao com o banco via JDBC, nao precisa mudar nada qdo migrar de win p/ linux…

a mesma coisa vale p/ o JTDS p/ SQL Server…

nao precisa mudar nada…

JAVA = “compile once, run everywhere!!”

falow

po kra
eu nem sabia q dava pra configurar uma fonte odbc em java pra mim era um padrao da micro$oft… num eh nao/
como q eu faco pra configurar um odbc em linux?

ops errei
eh :
eu nao sabia q dava pra configurar um fonte odbc em LINUX…
como eh q faiz?

Douglas,

Me desculpe passei o e-mail errado,
mande para esse mauro@microled.com.br.

Obrigado pela a ajuda. :smiley:

duardor…

nao sei como configurar uma ODBC em linux…nunca mexi com ele…

mas pq quer configurar uma no linux??
com os drivers de JDBC nao precisa ter ODBC…

falow.

ae rbaroni
seguinte
eu soh queria ter algum modo q funcionasse pra as duas plataformas…
tipo com jdbc vc nao tem fazer a ponte?
akela parada de jdbc:nomeDaPonte
q tipo seria para odbc
jdbc:odbc
???
valews pela paciencia! :stuck_out_tongue:

duardor…

vc nao precisa ficar mudando a configuracao do banco por plataforma…
nem precisa especificar a ponte…

olhe como faco minhas conexoes aqui…

com o SQL Server:

					Class.forName&#40;&quot;net.sourceforge.jtds.jdbc.Driver&quot;&#41;;
					conJTDS = DriverManager.getConnection&#40;&quot;jdbc&#58;jtds&#58;sqlserver&#58;//&quot;+strServer+&quot;&#58;1433&quot;,strUsuario,strSenha&#41;;

com o Oracle:

					DriverManager.registerDriver&#40;new oracle.jdbc.driver.OracleDriver&#40;&#41;&#41;;
					conNativaORCL = DriverManager.getConnection&#40;&quot;jdbc&#58;oracle&#58;thin&#58;@&quot;+strServer+&quot;&#58;1521&#58;&quot;+strDatabase,strUsuario,strSenha&#41;;

em nenhum momento especifiquei uma ponte ou qq coisa q possa prender o sistema a uma plataforma…

falow[/code]