Avatar billede fldkdla Nybegynder
09. oktober 2002 - 12:57 Der er 12 kommentarer og
1 løsning

Database conn.

Hej,
Hvordan laver man en database connection i jave og henter noget data ud fra en access database!

Mvh
daniel
Avatar billede disky Nybegynder
09. oktober 2002 - 13:14 #1
brug denne klasse:

/*
* DataBase.java
*
* Created on 3. december 2000, 21:06
*/

import java.sql.*;

import disky.database.*;

/**
*
* @author  Søren Reinke
* @version
*/

/*
* Funder lidt over om database forbindelsen kun skal åbnes ved brug, eller x antal altid skal være åben
* og man så bruge den/de som connection pool
*/


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)
    {           
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
            }
        }
        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;
    }
}




kald:
open ("sun.jdbc.odbc.JdbcDriver","jdbc:odbc:DITODBCNAVN", "USERNAME", "PASSWORD");

Ret det med Uppercase.

Derefter kan du f.eks. kalde:

executeQuery("select * from table where navn='damski'");

Den leverer et resultset tilbage som du så behandler.


Klassen er blevet brugt i flere projekter,
Avatar billede soreno Praktikant
09. oktober 2002 - 13:14 #2
eks, sådan:
import java.sql.*;

public class Main
{
    public static void main(String args[])
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = new String("jdbc:odbc:minDb");
            Connection conn = DriverManager.getConnection(url,"","");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM videofilm_t");

            while(rs.next())
            {
                System.out.println(rs.getInt("id"));
                System.out.println(rs.getString("title"));
                System.out.println(rs.getInt("year"));
            }

            conn.close();
            stmt.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }       
    }
}

du skal oprette en odbc forbindelse til databasen via kontrolpanelet - med navnet "minDb"
Avatar billede dsj Nybegynder
09. oktober 2002 - 13:15 #3
I windows tilføjer du din access-db under "Datasources (ODBS)" (w2k) så systemet kan finde den. Koden skal se således ud:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;

class tester {
  public static void main(String[] args) {
    // forbindelsen til databasen åbnes
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // hvis din db hedder Forening
    Connection con = DriverManager.getConnection("jdbc:odbc:Forening", user, pass);
    // udtræk af db; et ResultSet returneres, som du kan hente dine data ud af - se API'en for ResultSet
    Statement stat = con.createStatement();
    ResultSet result = stat.executeQuery("SELECT * FROM Table1;");
    // kører en update på db'en
    stat = con.createStatement();
    stat.executeUpdate("DELETE FROM Table1 WHERE navn='hans';");
    // forbindelsen lukkes
    con.close();
    con = null;
  }
}

Jeg kan vise det på en mere struktureret måde hvis du har brug for det. Det her viser bare ganske simpelt og hurtigt, hvordan du gør
Avatar billede fldkdla Nybegynder
09. oktober 2002 - 13:33 #4
Jeg er ikke ret hård til jave og jeg har lavet et program som bare skal hente noget fra en database og vise det i en form jeg sender lige koden med !

Hvis vi siger jeg har en database der hedder navne med en tabel der hedder venner!
Jeg har oprettet en ODBC Connection der hedder navne!

Så vil jeg gerne have det sådan at når jeg trykker på en knap så åbner den et vindue med de data der er i den tabel!

Hvis 150 point ikke er nok kan i godt få nogle flere for det rigtige svar!

her er koden til min form!

Jeg bruger Microsoft Visual Studio J++
Avatar billede fldkdla Nybegynder
09. oktober 2002 - 13:35 #5
XP er SUX, jeg sender lige koden når jeg har genstartet!
Avatar billede soreno Praktikant
09. oktober 2002 - 23:49 #6
ja, godt jeg ikke har XP - med den genstartstid ville jeg da dø af kedsomhed.. ;-)
Avatar billede fldkdla Nybegynder
10. oktober 2002 - 08:32 #7
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;

/**
* This class can take a variable number of parameters on the command
* line. Program execution begins with the main() method. The class
* constructor is not invoked unless an object of type 'Form1' is
* created in the main() method.
*/
public class Form1 extends Form
{
    public Form1()
    {
        // Required for Visual J++ Form Designer support
        initForm();       

        // TODO: Add any constructor code after initForm call
    }

    /**
    * Form1 overrides dispose so it can clean up the
    * component list.
    */
    public void dispose()
    {
        super.dispose();
        components.dispose();
    }

    /**
    * NOTE: The following code is required by the Visual J++ form
    * designer.  It can be modified using the form editor.  Do not
    * modify it using the code editor.
    */
    Container components = new Container();

    private void initForm()
    {
        this.setSize (new Point(300,300));
        this.setText ("Form1");
    }

    /**
    * The main entry point for the application.
    *
    * @param args Array of parameters passed to the application
    * via the command line.
    */
    public static void main(String args[])
    {
        Application.run(new Form1());
    }
}
Avatar billede disky Nybegynder
17. januar 2003 - 09:09 #8
Hvis du bruger Visual J++ er du selv uden om problemmerne, det er IKKE rigtig java den laver, og den anvender en kæmpe stak properitære klasser som gør at java programmer du laver ikke kan bruges på andre platforme.

Hvorfor afviste du mit svar ? Når det nu dækker det du bad om.
Avatar billede fldkdla Nybegynder
17. januar 2003 - 11:51 #9
Jeg kunne ikke bruge det! Det virkede ikke ! Og jeg skrev jeg brugte Visual J++ så jeg kan have en løsning der virker med det!
Avatar billede fldkdla Nybegynder
25. september 2003 - 19:02 #10
skriv igen og i får pointne
Avatar billede soreno Praktikant
25. september 2003 - 19:05 #11
Ok.
Avatar billede fldkdla Nybegynder
25. september 2003 - 19:15 #12
Ved du hvor jeg kan finde nogle CSS online books i PDF eller DOC format ?
Avatar billede soreno Praktikant
25. september 2003 - 19:25 #13
Nej, ikke online.

Men du kan jo evt. købe det der hæfte fra IDG.. ?
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