Avatar billede soeborg Nybegynder
16. oktober 2002 - 17:08 Der er 26 kommentarer og
2 løsninger

Access og java?

Hejsa. Hvordan gør jeg dette:
Jeg har i databasen oprettet en tabel ved navn "venner"
med rækkerne "navn" og "icq", under mit java program har jeg tekstfelterne med navne som "fornavn" "efternavn" og "nr" hvordan for jeg gemt både "fornavn" og "efternavn" i databasen under "navn" og hvordan får jeg "nr" under "icq"?? Samt hvordan man søger, husk det er access...
/Soeborg
Avatar billede disky Nybegynder
16. oktober 2002 - 18:01 #1
Du bruger denne Database handler klasse:

Ret det med uppercase nede i bunden.
Spørg hvis der er problemmet.

Hvor meget kender du til SQL syntax ?

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("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:ODBCNAME","USERNAME","PASSWORD");
    }
}
Avatar billede soeborg Nybegynder
16. oktober 2002 - 18:06 #2
oki, men hvor er det lige navn, icq, fornavn, efternavn og nr kommer ind? Jeg er ikke så meget inde i databaser, derfor access :)
Dejligt langt svar ellers! Lader den lige stå åben lidt endnu...
Avatar billede soreno Praktikant
16. oktober 2002 - 18:07 #3
har du opsat en odbc forbindelse til din database ?
Avatar billede soeborg Nybegynder
16. oktober 2002 - 18:10 #4
dooh ja det tror jeg...
Avatar billede soeborg Nybegynder
16. oktober 2002 - 18:10 #5
ups disky svar lige igen... fik lavet en fejl SORRY
Avatar billede soeborg Nybegynder
16. oktober 2002 - 18:11 #6
soreno ->
public Liste()
{
}

public open Liste()
{
  return super.open
("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:Liste");
}
Avatar billede disky Nybegynder
16. oktober 2002 - 18:12 #7
Du skal oprette en ODBC datakilde under windows med adgang til din access database.

derefter skal du f.eks. lave:

Database db=new Database();
db.open();
ResultSet res=db.doQuery("select navn,icq,fornavn,efternavn,nr from MINTABEL");
while(res.hasNext())
{
  String fornavn=res.getString("fornavn");
  //osv for resten
  System.out.println("Fornavn = "+fornavn);
}
db.close();


Noget i den retning skulle udlæse din Database tabel, husk at rette tabelnavn i sql querien.
Avatar billede soreno Praktikant
16. oktober 2002 - 18:34 #8
frit fra RAM:
kontrol panel-> odbc forbindels -> tilføj en access database -> tilføj en til "bruger dns" -> datakildenavn "Liste" -> Vælg -> peg på din database
Avatar billede disky Nybegynder
16. oktober 2002 - 18:39 #9
Her er et svar igen :-)
Avatar billede soeborg Nybegynder
16. oktober 2002 - 18:49 #10
takker...!
Avatar billede arne_v Ekspert
16. oktober 2002 - 18:54 #11
Hvor kommer klassen Database fra ?
Avatar billede soreno Praktikant
16. oktober 2002 - 18:56 #12
arne> kig den nederste 1/6 af den første post
Avatar billede soreno Praktikant
16. oktober 2002 - 18:57 #13
disky> hvorfor har du egentlig kaldt den "dbHandler" - det følger jo ikke konventionen - den burde vel hedde "DbHandler" ?
Avatar billede disky Nybegynder
16. oktober 2002 - 19:05 #14
soreno:
Det har du egentligt ret i, det skal siges den version jeg selv bruger overholder naming convention som den skal, denne her er bare taget fra et gammelt svar her på sitet.

soeborg:
Skulle der være problemmer siger du bare til :)
Avatar billede soeborg Nybegynder
16. oktober 2002 - 23:45 #15
oki jeg takker indtil vidre det kan være der kommer mere i denne gruppe.. :) Men tak!
Avatar billede soeborg Nybegynder
17. oktober 2002 - 16:26 #16
disky -> hmm.. Er det ikke kun sådan man søger?
eller...
disky icq#?
soreno icq#?
Avatar billede soeborg Nybegynder
17. oktober 2002 - 17:14 #17
skal jeg downloade en jdbc pakke?? Kan ikke finde noget i kontrolpanelet.?
Avatar billede soreno Praktikant
17. oktober 2002 - 17:24 #18
hvis det er odbc du ikke kan sætte op:
http://www.jepstone.net/fom/cache/90.html


hvilket os bruger du ?
Avatar billede disky Nybegynder
17. oktober 2002 - 17:25 #19
icq 1413069
Avatar billede soeborg Nybegynder
17. oktober 2002 - 18:18 #20
tak disky.
soreno -> Win XP. (ikke slå) :o
Avatar billede soreno Praktikant
17. oktober 2002 - 18:28 #21
så vidt jeg husker er odbc skjult fra kontrol panlet i winxp ?
prøv at kør:
"c:\WINNT\system32\odbccp32.cpl" (ret stien hvis ikke den stemmer med din egen)
Avatar billede soeborg Nybegynder
17. oktober 2002 - 18:44 #22
YES
Avatar billede soeborg Nybegynder
17. oktober 2002 - 19:05 #23
Fatter ikke så meget sql..
Hvad gør jeg forkert?? Henter jeg ikke navn fra tabelen kunder og sætter det ind i jTextField1??

Fejlen:
symbol  : method hasNext ()
location: interface java.sql.ResultSet
while(res.hasNext())

Koden:
Database db=new Database();
db.open();
ResultSet res=db.doQuery("select Navn from Kunder");
while(res.hasNext())
{
String Navn=res.getString("jTextField1");
System.out.println("jTextField1 = "+Navn);
}
db.luk();
Avatar billede disky Nybegynder
17. oktober 2002 - 19:12 #24
min fejl den hedder ikke 'hasNext()' men bare 'next()'

sorry
Avatar billede soeborg Nybegynder
18. oktober 2002 - 09:48 #25
tja det gjorde det ikke bedre.. eller! Har pinget dig på icq, men intet svar. Er der ikke et sted man kan læse om sql til access...?

Nuværende fejl:
while(res.next()) og String navn=res.getString("Navn");

den siger:
unreported exception java.sql.SQLException; must be caught or declared to be thrown

Kode:
public void jButtonSøg_actionPerformed(ActionEvent e)
{
Database db=new Database();
db.open();
ResultSet res=db.doQuery("select navn from kunder");
while(res.next())
{
String navn=res.getString("Navn");
//osv for resten
System.out.println("navn = "+navn);
}
db.close();
}
Avatar billede soeborg Nybegynder
18. oktober 2002 - 09:50 #26
du skal nok få nogle flere point ;-)
Avatar billede disky Nybegynder
18. oktober 2002 - 09:58 #27
ret til:
public void jButtonSøg_actionPerformed(ActionEvent e)
{
Database db=new Database();
db.open();
ResultSet res=db.doQuery("select navn from kunder");
try
{
while(res.next())
{
String navn=res.getString("Navn");
//osv for resten
System.out.println("navn = "+navn);
}
}
catch(SQLException e)
{
e.printStackTrace(System.out);
}
db.close();
}
Avatar billede soeborg Nybegynder
18. oktober 2002 - 10:51 #28
nope... Kan ikke definere e to gange. ;-)
ActionEvent e
catch(SQLException e)
{
e.printStackTrace(System.out);
}
ret til:
catch(SQLException u)
{
u.printStackTrace(System.out);
}
Takker
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