Avatar billede japlex Nybegynder
26. marts 2003 - 14:28 Der er 8 kommentarer og
2 løsninger

MySQL og Sun Studio

Jeg arbejder i øjeblikket på en applet i Sun Studio der trækker data fra en MySQL database.

Det giver problemer i forhold til driveren. Jeg har installeret mysql-connector-java-3.0.6-stable.

ER der nogen der har viden om hvordan MySQL og Sun Studio spiller sammen!
Avatar billede disky Nybegynder
26. marts 2003 - 15:13 #1
Hvad tænker du på ?

Forsøger du at få dit java program til at hente data i basen ?

Eller vil du havde dit udviklingsværktøj til at snakke med basen direkte ?
Avatar billede arne_v Ekspert
26. marts 2003 - 19:18 #2
Du:
  * mounter jar-filen med JDBC driveren
  * kalder Class.forName med det rigtige driver navn
  * kalder DriverManager.getConnection med korrekt URL + username/password
så burde det virke !

Hvor går det galt henne og hvilken fejl får du ?
Avatar billede japlex Nybegynder
26. marts 2003 - 20:40 #3
Jeg vil prøve at uddybe:

Appletten skal indeholde 2 dropdownlister, en knap og en liste. Meningen er at brugeren i den første dropdownliste skal vælge et gadenavn hvorefter næste dropdownliste fyldes med denne gades husnumre. Brugeren vælger så husnummer og der skal derefter forespørges i db'en efter denne adresses byggesager, der fyldes i listen.

I Sun Studio er jeg så begyndt på en Applet template af typen AWT FORM. Jeg har smidt de nødvendige kontroller på formen og tilføjet en ConnectionSource og en NBJDBCRowset og angivet de nødvendige property indstillinger.

Jeg er meget usikker på om jeg er på rette vej. Hvordan får jeg smidt noget indhold i mine dropdownlister og i sidste ende selve listen??

Jeg smider lige koden med:

*********************************************************************

/*
* MyApplet.java
*
* Created on 26. marts 2003, 12:36
*/

/**
*
* @author  Jacob Alex Petersen
*/

import java.sql.*;
import java.applet.*;

public class MyApplet extends java.applet.Applet {
   
    /** Initializes the applet MyApplet */
    public void init() {
        initComponents();
    }
   
    /** This method is called from within the init() method 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() {
        connectionSource1 = new org.netbeans.lib.sql.ConnectionSource();
        try {
            nBJdbcRowSet1 = new org.netbeans.lib.sql.NBJdbcRowSet();
        } catch (java.sql.SQLException e1) {
            e1.printStackTrace();
        }
        jComboBox1 = new javax.swing.JComboBox();
        jComboBox2 = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jList1 = new javax.swing.JList();

        connectionSource1.setDatabase("jdbc:mysql://localhost:3306/skabelon");
        connectionSource1.setDriver("com.mysql.jdbc.Driver");
        connectionSource1.setUsername("root");
        nBJdbcRowSet1.setCommand("SELECT * FROM tblbs");
        nBJdbcRowSet1.setConnectionSource(connectionSource1);

        jComboBox1.setFont(new java.awt.Font("Dialog", 0, 12));
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });

        add(jComboBox1);

        add(jComboBox2);

        jButton1.setText("jButton1");
        add(jButton1);

        jList1.setBorder(new javax.swing.border.EtchedBorder());
        add(jList1);

    }

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
    }
   
   
    // Variables declaration - do not modify
    private org.netbeans.lib.sql.ConnectionSource connectionSource1;
    private org.netbeans.lib.sql.NBJdbcRowSet nBJdbcRowSet1;
    private javax.swing.JButton jButton1;
    private javax.swing.JList jList1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox1;
    // End of variables declaration
   
}

****************************************************************************

>> arne_v. Skal jeg mounte jar-filen under menu-punktet "File | Mount Filesystem"??

Jeg håber I kan hjælpe mig videre. Jeg giver gerne flere point om nødvendigt!
Avatar billede arne_v Ekspert
26. marts 2003 - 20:42 #4
Ja - det er en måde at få den ind i classpath på.

[jeg bruger ikke selv Sun ONE Studio, så jeg ved ikke om det er deb bedste]
Avatar billede arne_v Ekspert
26. marts 2003 - 20:44 #5
Jeg stejler iøvrigt lidt over:

    private org.netbeans.lib.sql.ConnectionSource connectionSource1;
    private org.netbeans.lib.sql.NBJdbcRowSet nBJdbcRowSet1;

hvorfor er det nødvendigt at bruge ikke-standard kald ?
Avatar billede japlex Nybegynder
26. marts 2003 - 20:44 #6
arne_v >> Hvad bruger du så?
Avatar billede japlex Nybegynder
26. marts 2003 - 20:46 #7
arne_v >> Kan du ikke alligevel lige kigge på min kode!
Avatar billede arne_v Ekspert
26. marts 2003 - 20:53 #8
Jeg bruger Eclipe og JBuilder.

Jeg kan da godt prøve at kigge på det, men der er mange som
er meget bedre end mig til applets.
Avatar billede viht Nybegynder
27. marts 2003 - 01:18 #9
Databasen har du tilsyneladende styr på.. men jeg kan da hjælpe dig lidt med comboboxen(e) og en liste.

Her har jeg nogle objekter jeg kommer i en combobox hvor deres toString metode bestemmer navnet i listen, men det objekt de har tilknyttet bestemmer indholdet i listen ved siden af.

Vælg et element for at få det vist i listen.

// Test.java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Test extends JFrame {
   
    private DefaultListModel model;
    private JComboBox combo1;
   
    public Test() {
        super("Test");
        setSize(400,400);
       
        combo1 = new JComboBox();
        combo1.addItem(new ComboItem(new Integer(42), "Et tal"));
        combo1.addItem(new ComboItem(new Integer(1337), "Endnu et tal"));
        combo1.addItem(new ComboItem(new Double(4711.42), "En double"));
        combo1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                ComboItem o = (ComboItem)combo1.getSelectedItem();
                model.addElement(o.getUserObject());
            }
        });
        JPanel comboPanel = new JPanel();
        comboPanel.add(combo1);
       
        model = new DefaultListModel();
        JList list = new JList(model);
       
        getContentPane().add(comboPanel, BorderLayout.WEST);
        getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);
    }
    private class ComboItem {
        private Object o;
        private String navn;
        public ComboItem(Object o, String navn) {
            this.o = o;
            this.navn = navn;
        }
       
        public String toString() {
            return navn;
        }
        public Object getUserObject() {
            return o;
        }
        public void setUserObject(Object o) {
            this.o = o;
        }
    }
    public static void main(String[] args) {
        new Test().show();
    }
}
Avatar billede disky Nybegynder
27. marts 2003 - 07:24 #10
japlex:

Hvis du bruger nedenstående klasse til at connecte til din database er det ret nemt at udtrække data:

Du åbner forbindelsen ved at kalde open() i Database klassen, derefter kalde du doQuery() med f.eks. 'select * from base' den returnerer et result set som du iterere igennem.

Så slipper du også for de ikke sun specifikke klasser du bruger fra netbeans.

import java.sql.*;

/**
*
* @author  srr
* @version
*/
public class dbHandler extends Object
{
   
    private Connection con=null;

    /** Creates new DataBase */
    public dbHandler()
    {
    }

    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {           
//        System.out.println(\"************************************************************************\");
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
//                System.out.println(\"con = \"+con);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
   
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }
   
    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet doQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeQuery(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}





fil #2



/**
*
* @author  srr
* @version
*/
public class Database extends dbHandler
{
   
    /** Creates new Database */
    public Database()
    {
    }

    public boolean open()
    {
        return super.open(\"org.gjt.mm.mysql.Driver\",\"jdbc:mysql://DBSERVERNAME/DATABASENAME\",\"USERNAME\",\"PASSWORD\");
    }
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