Hoje vou mostrar como fazer a conexão de uma aplicação em Java com SQL Server.
Primeiramente, baixe o SQL Server JDBC Driver direto do link oficial da Microsoft – https://docs.microsoft.com/pt-br/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 . Agora, vamos ao tutorial (nesse exemplo foi usado o IDE Eclipse).
- Na aplicação sua em Java, crie uma pasta chamada lib
- Coloque o arquivo .jar que você baixou de conexão com SQL Server dentro dessa pasta
- Vá nas propriedades do projeto
- No Java Build Path, na aba Libraries, clique em Add JARs
- Aponte para o arquivo que você adicionou no passo 2
- Vá no servidor que o SQL Server está instalado, e abra o Configuration Manager
- Na parte de Configurações de rede, ache a instância que você irá se conectar
- Clique com o botão direito em TCP/IP, vá em Propriedades, e altere o Habilitado para Sim
- Agora na aba Endereços IP, vá no final até IPAll e defina uma porta (por exemplo, 1433 ou 1443).
- Agora, reinicie o Banco de Dados via Management Studio / Azure Data Studio
- Na sua aplicação Java, você já poderá usar normalmente
Abaixo o código fonte feito em Java para exemplo do tutorial acima:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Formatter;
import javax.swing.UIManager.*;
import java.sql.*;
public class TestBD extends JFrame implements ActionListener, PropertyChangeListener {
private static final long serialVersionUID = 1L;
/* criando variaveis dos componentes na tela*/
private JLabel lbIPServ, lbPorta, lbBase, lbUser, lbSenha, lbArq, lbLog;
private JTextField jtIPServ, jtPorta, jtBase, jtArq, jtUser, jtSenha;
private JButton btConfirmar, btArq;
private JProgressBar progressBar;
private Task task;
public TestBD() {
setLayout(null);
lbIPServ = new JLabel("IP / Servidor:");
lbIPServ.setBounds(10,10,100,30);
add(lbIPServ);
jtIPServ = new JTextField(100);
jtIPServ.setBounds(110,10,350,30);
add(jtIPServ);
lbPorta = new JLabel("Porta:");
lbPorta.setBounds(10,50,100,30);
add(lbPorta);
jtPorta = new JTextField(100);
jtPorta.setBounds(110,50,350,30);
add(jtPorta);
lbBase = new JLabel("Base de Dados:");
lbBase.setBounds(10,90,100,30);
add(lbBase);
jtBase = new JTextField(100);
jtBase.setBounds(110,90,350,30);
add(jtBase);
lbUser = new JLabel("Usuario:");
lbUser.setBounds(10,130,100,30);
add(lbUser);
jtUser = new JTextField(100);
jtUser.setBounds(110,130,350,30);
add(jtUser);
lbSenha = new JLabel("Senha:");
lbSenha.setBounds(10,170,100,30);
add(lbSenha);
jtSenha = new JTextField(100);
jtSenha.setBounds(110,170,350,30);
add(jtSenha);
lbArq = new JLabel("Arquivo:");
lbArq.setBounds(10,210,100,30);
add(lbArq);
jtArq = new JTextField(100);
jtArq.setBounds(110,210,350,30);
add(jtArq);
btArq = new JButton("...");
btArq.setBounds(460,210,20,30);
btArq.setToolTipText("Selecionar arquivo");
btArq.addActionListener(this);
add(btArq);
lbLog = new JLabel("");
lbLog.setBounds(10,270,450,30);
lbLog.setForeground(Color.RED);
add(lbLog);
progressBar = new JProgressBar(0, 100);
progressBar.setStringPainted(true);
progressBar.setBounds(10,310,470,30);
progressBar.setString("...");
add(progressBar);
btConfirmar = new JButton("Confirmar");
btConfirmar.setBounds(190,350,120,30);
btConfirmar.setToolTipText("Confirma a leitura");
btConfirmar.setMnemonic('C');
btConfirmar.addActionListener(this);
add(btConfirmar);
/* mudando visual dos componentes na tela */
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
SwingUtilities.updateComponentTreeUI(this);
this.pack();
break;
}
}
}
catch (Exception e) {}
/* definindo o valor default dos campos */
jtIPServ.setText("localhost");
jtPorta.setText("1433");
jtBase.setText("BaseTeste");
jtArq.setText("C:\\Spool\\teste_java.log");
jtUser.setText("sa");
jtSenha.setText("tst123");
}
public void actionPerformed(ActionEvent e) {
/* Se for o botao confirmar */
if (e.getSource() == btConfirmar) {
String senhaPega = jtSenha.getText();
/* IP, DataBase, Arquivo, Usuario e Senha sao obrigatorios*/
if ( (jtIPServ.getText().isEmpty()) || jtBase.getText().isEmpty() || jtArq.getText().isEmpty() || jtUser.getText().isEmpty() || senhaPega.isEmpty()){
JOptionPane.showMessageDialog(null, "Campo(s) em branco!", "#001 - Campos", 0);
lbLog.setText("Campo(s) em branco!");
}
/* Senao, chama a tarefa de executar a leitura no banco */
else {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
task = new Task();
task.addPropertyChangeListener((PropertyChangeListener) this);
task.execute();
}
}
/* Se for o botao de selecionar o arquivo, abre uma tela para definir o caminho*/
else if (e.getSource() == btArq) {
final JFileChooser fc = new JFileChooser(jtArq.getText());
int returnVal = fc.showOpenDialog(TestBD.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
jtArq.setText(fc.getSelectedFile().getAbsolutePath());
}
}
}
public void propertyChange(PropertyChangeEvent evt) {
/* Definindo o valor da barra de progresso na mudanca de propriedade */
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressBar.setValue(progress);
}
}
class Task extends SwingWorker<Void, Void> {
@Override
public Void doInBackground() {
/* Define variaveis de controle e deixa os campos inativos para alteracao */
setProgress(0);
double atual = 0, ultimo = 0;
int porcentagem = 0;
String codigo = "";
String descricao = "";
String textoFull = "";
String dbURL = "";
String user = jtUser.getText().trim();
String pass = jtSenha.getText().trim();
String atuStr = "", totStr = "";
btConfirmar.setEnabled(false);
jtIPServ.setEnabled(false);
jtPorta.setEnabled(false);
jtBase.setEnabled(false);
jtArq.setEnabled(false);
jtUser.setEnabled(false);
jtSenha.setEnabled(false);
btArq.setEnabled(false);
/* Define a barra como o valor total */
setProgress(porcentagem);
try{
/* Monta a URL de conexao do banco */
dbURL = "jdbc:sqlserver://"+jtIPServ.getText().trim();
if (!(jtPorta.getText().isEmpty()))
dbURL += ":"+jtPorta.getText().trim();
dbURL += ";databaseName="+jtBase.getText().trim();
/* Faz a conexao com o banco */
Connection conn = DriverManager.getConnection(dbURL, user, pass);
if (conn != null) {
Statement statement = conn.createStatement();
/* Pega o ultimo registro */
String selectQuery = "";
ResultSet rs = statement.executeQuery(" SELECT ISNULL(MAX(CODIGO), 0) AS ULTIMO FROM PRODUTOS ");
while (rs.next()) {
ultimo = Double.parseDouble(rs.getString("ULTIMO"));
}
/* Define o valor total em texto para mostrar na tela */
totStr = String.valueOf(ultimo);
totStr = totStr.substring(0, totStr.indexOf("."));
/* Faz uma nova consulta pegando os campos de codigo e descricao */
selectQuery = " SELECT CODIGO, DESCRICAO FROM PRODUTOS ";
rs= statement.executeQuery(selectQuery);
/* Enquanto houver produtos, atualiza a barra de progresso, pega os dois campos e coloca na variavel texto*/
while (rs.next()) {
atual++;
atuStr = String.valueOf(atual);
atuStr = atuStr.substring(0, atuStr.indexOf("."));
lbLog.setText("Processando linha "+atuStr+" de "+totStr+"...");
porcentagem = (int) ((atual*100)/(ultimo));
setProgress(porcentagem);
progressBar.setString(String.valueOf(porcentagem)+" %");
codigo = rs.getString("CODIGO");
descricao = rs.getString("DESCRICAO");
textoFull += codigo + "|" + descricao + "\n";
}
/* Tenta criar o arquivo com todos os produtos */
try
{
Formatter saida = new Formatter(jtArq.getText());
saida.format(textoFull);
saida.close();
JOptionPane.showMessageDialog(null,"Arquivo '"+jtArq.getText()+"' criado!","Arquivo",1);
}
catch(Exception erro){
JOptionPane.showMessageDialog(null,"Arquivo nao pode ser gerado!","Erro",0);
}
lbLog.setText("Processo Concluido!");
}
}
/* Se houve algum problema mostra ao usuario */
catch (SQLException ex){
System.out.println("SQLException: "+ex.getMessage());
System.out.println("SQLState: "+ex.getSQLState());
System.out.println("VendorError: "+ex.getErrorCode());
JOptionPane.showMessageDialog(null, "Erro na conexao com o Banco!", "#003 - SQL Server", 0);
lbLog.setText("Erro na conexao com o banco!");
}
/* Volta o estado dos componentes */
btConfirmar.setEnabled(true);
jtIPServ.setEnabled(true);
jtPorta.setEnabled(true);
jtBase.setEnabled(true);
jtArq.setEnabled(true);
jtUser.setEnabled(true);
jtSenha.setEnabled(true);
btArq.setEnabled(true);
return null;
}
@Override
public void done() {
Toolkit.getDefaultToolkit().beep();
setCursor(null);
}
}
public static void main(String arg[]) {
TestBD tstJanela = new TestBD();
tstJanela.setSize(500,420);
tstJanela.setLocationRelativeTo(null);
tstJanela.setTitle("Test BD - Conexao com SQL Server");
tstJanela.getContentPane().setBackground(Color.WHITE);
tstJanela.setResizable(false);
tstJanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
tstJanela.setVisible(true);
}
}
Bom pessoal, por hoje é só.
Abraços e até a próxima.










