Avatar billede gerberdk Nybegynder
26. april 2005 - 19:49 Der er 12 kommentarer og
1 løsning

kan ikke få forbindelse mellem SQL og java

Jeg er ret i ny i java, og har en opgave i skolen hvor jeg skal få SQL til at arbejde sammen med java.

Jeg har lavet en database i microsoft sql server 2000, og vil gerne kunne udskrive en tabel i en gui.

Jeg har skevet følgende:

import java.sql.*;
import java.awt.event.*;
import javax.sql.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;


public class HotelApp extends javax.swing.JFrame {
   
    /** Creates new form HotelApp */
    public HotelApp() {
        initComponents();
       
    try {
            //  Connect to the Database
            String driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
            String url ="jdbc:microsoft:sqlserver://GERBER:1433;databasename=MandatoryHotel";
//         
//            String driver = "com.jnetdirect.jsql.JSQLDriver";
//            String url = "jdbc:JSQLConnect://localhost/database=MandatoryHotel";
             
            String userid = "GERBER";
            String password = " ";
           
            Class.forName( driver );
            Connection conn = DriverManager.getConnection( url, userid, password );
     
       
            Statement stat = conn.createStatement();
          ResultSet rs = stat.executeQuery("select * from Hotels");
         
          while (rs.next()){
              int hotelNo = rs.getInt(1);
              String hotelName = rs.getString(2);
              String address = rs.getString(3);
          }
           
           
          } catch(Exception e) {
            System.out.println( e );
        }
       
          }     
   
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setTitle("HotelApp af Allan Gerber");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("Vis tabel");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.SOUTH);

        jScrollPane1.setViewportView(jTextArea1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-410)/2, (screenSize.height-334)/2, 410, 334);
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
     
     
       
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        new HotelApp().show();
    }
   
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration
   
}




Jeg tror ikke jeg kan få forbindelse til databasen da jeg får dette at vide:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.


Håber nogen gider og kan hjælpe
Avatar billede arne_v Ekspert
26. april 2005 - 19:52 #1
Lytter din SQLServer på port 1433 ?
Avatar billede gerberdk Nybegynder
26. april 2005 - 19:56 #2
ja det gør den
Avatar billede cayman Nybegynder
26. april 2005 - 21:37 #3
Dit password er en string der indeholder et space. Er det rigtigt?
Desuden mener jeg du skal skrive

Class.forName( driver ).newInstance();

Jeg har ikke sat mig voldsomt ind i din kode - men du kan se om det holder..
Avatar billede arne_v Ekspert
26. april 2005 - 21:42 #4
.newInstance() er ikke nødvendig med bare nogenlunde fornuftige drivere

jeg har set det virke med SQLServer JDBC driver uden

den skader dog heller ikke
Avatar billede arne_v Ekspert
26. april 2005 - 21:43 #5
Er der nogen firewall installeret på maskinen ?
Avatar billede gerberdk Nybegynder
27. april 2005 - 15:28 #6
Jeg har lavet en ny user med password og givet adgang for min firewall.. jeg har på nuværende tidspunkt denne kode:

import java.sql.*;
import java.awt.event.*;
import javax.sql.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;


public class HotelApp extends javax.swing.JFrame {
   
    /** Creates new form HotelApp */
    public HotelApp() {
        initComponents();
       
        try {
            //  Connect to the Database
            String driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
            String url ="jdbc:microsoft:sqlserver://GERBER:1433;databasename=MandatoryHotel";
           
           
            String userid = "Allan";
            String password = "Saviola";
           
          try{
              Class.forName(driver);
          } catch (ClassNotFoundException c){
              System.out.println(""+c);
          }
         
            Connection conn = DriverManager.getConnection( url, userid, password );
           
           
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery("select * from Hotels");
           
            hoteltabel.setModel(asTableModel(rs));
               
           
        } catch(SQLException e) {
            System.out.println("" + e );
        }
       
    }
   
    public TableModel asTableModel(final ResultSet rs) throws SQLException{
        final Vector columnNames = new Vector();
        final Vector rowData = new Vector();
       
        final ResultSetMetaData rsMeta = rs.getMetaData();
        for(int i = 1; i <= rsMeta.getColumnCount(); i++){
            columnNames.add(rsMeta.getColumnName(i));
           
           
        }
        while (rs.next()){
            final Vector row = new Vector();
            for(int i = 1; i<= rsMeta.getColumnCount(); i++){
                row.add(rs.getObject(i));
            }
            rowData.add(row);
           
        }
       
        return new DefaultTableModel(rowData, columnNames);
       
    }
   
   
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        hoteltabel = new javax.swing.JTable();

        setTitle("HotelApp: Allan Gerber");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("Vis Tabel");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.SOUTH);

        hoteltabel.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(hoteltabel);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-412)/2, (screenSize.height-341)/2, 412, 341);
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
 
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        new HotelApp().show();
    }
   
    // Variables declaration - do not modify
    private javax.swing.JTable hoteltabel;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration
   
}

Jeg får stadig dette at vide:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.


Jeg har tjecket porten og navnet på databasen, og de passer begge
Avatar billede arne_v Ekspert
27. april 2005 - 20:20 #7
Hvad sker der hvis du åbner en kommando prompt og laver:

telnet GERBER 1433

?
Avatar billede gerberdk Nybegynder
28. april 2005 - 13:46 #8
får dette at vide:

Opretter forbindelse til gerber... Der kunne ikke oprettes forbindelse til værten, på port 1433: Forbindelsen blev ikke oprettet
Avatar billede arne_v Ekspert
28. april 2005 - 13:48 #9
så er det ikke et Java/JDBC problem.

der er ikke mulighed for at oprette TCP/Ip forbindelse

og det kan kun skyldes 2 ting enten lyttes der ikke på porten eller
så er der noget som spærrer (firewall)
Avatar billede arne_v Ekspert
28. april 2005 - 13:48 #10
Hvad viser:

netstat -an

?
Avatar billede gerberdk Nybegynder
28. april 2005 - 14:23 #11
http://elev.rhs.dk/alger/

det er hvad den skriver
Avatar billede arne_v Ekspert
28. april 2005 - 15:12 #12
broken image
Avatar billede gerberdk Nybegynder
20. februar 2006 - 14:08 #13
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester