Avatar billede predator Nybegynder
11. december 2001 - 11:01 Der er 2 kommentarer og
1 løsning

Database connection i RMI-server

Hvordan laver man en simpel databasetilkobling i Java, når man allerede har programmeret RMI-serveren. (Kan man f.eks. bruge en dataconnection?) Gerne med et kodeeksempel. (ODBC er oprettet) Eller evt. en løsning hvor man går udenom ODBC
Avatar billede disky Nybegynder
11. december 2001 - 11:05 #1
glem alt om odbc det er for langsomt brug en jdbc driver direkte til databasen

Brug denne klasse:

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;
    }
}





og kalde den sådanne her:

open(\"org.gjt.mm.mysql.Driver\",\"jdbc:mysql://SERVERNAME/DATABASENAME\",\"USERNAME\",\"PASSWORD\");

Den er til Mysql, og du skal rette det med uppercase
Avatar billede predator Nybegynder
11. december 2001 - 11:09 #2
import java.rmi.server.UnicastRemoteObject;
import java.rmi.*;

public class RMIServer extends UnicastRemoteObject implements ServerInterface
{
    private String myString = \"\";
   
    // Standard konstruktør
    public RMIServer() throws RemoteException
    {
        super();
    }
   
    // Implementering af metoder fra serverinterface
    public synchronized void setString (String s) throws RemoteException
    {
        this.myString = s;
        System.out.println(\"String ændret...\");
    }
   
    public synchronized String getString() throws RemoteException
    {
        System.out.println(\"String returneret\");
        return myString;
    }
   
   
    // Instanciering og registrering af server i RMI
   
    public static void main(String args[])
    {
        try
        {
            String name = \"rmi://localhost:8050/RMIServer\";
            System.out.println(\"\\nRegistrering som:\\\"\"+name+\"\\\"\");
            RMIServer theServer = new RMIServer();
            Naming.rebind(name,theServer);
            System.out.println(name+\" klar...\");
        }
       
        catch(Exception e)
        {
            System.out.println(\"Exception i registrering...  :)  \"+e);
        }
    }
}


Hvad skal der tilføjes i den her kode for at få det der til at virke?
Avatar billede disky Nybegynder
11. december 2001 - 11:12 #3
du skal oprette en instans af dbHandler, og kalde open metoden som jeg beskrev nederst i det tidligere indlæg.

Så kan du sende sql kommandoer til den, og få resultset\'s tilbage.

Forresten hvis du fortsat vil anvende odbc skal du bare udskifte driver navn, og connection string til at passe til odbc
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