Avatar billede havmaage Juniormester
02. juli 2002 - 20:26 Der er 38 kommentarer og
1 løsning

hjælp til newbie (vil lave prøve program)

Hej!

Jeg er total ny i java programmering, og har sat mig for mål at prøve at lave et lille program "bare for sjov) Det eneste det skulle kunne i første omgang er at loade data ind i en klasse "person" derefter skrive dette i en access database. Jeg har forsøgt lidt selv og hasr følgende ide:

class test {
   
    public static void main(String[] args){
       
        new person("Jan","villavej 12",22334455);
   
    }

   
    class person {
      //hvordan får jeg lavet constructor metode til at initalisere min klasse

          String navn;
          String Adresse;
          int telefon;
 
       
          }
class {
        //constructor metode skal skrive i db via jdbc eller odbc  men hvordan.

}

Håber det giver et billede af hvad jeg vil.
mit mål er 1. at kunne lave simple klasser og bruge dem,.
2. at kunne tilgå databaser via indbygget jdbc eller odbc. helst mysql el. oracle og sybase, men i første omgang access.
 
Håber der er nogen der vil give mig en skabelon, gerne meget simpel.
Avatar billede disky Nybegynder
02. juli 2002 - 20:41 #1
hvis du er helt ny fin noget nemmere at lave.

men hvis du søger lidt heromkring, vil du finde min databasehandling klasse de første 20 gange :)

Den kan du bruge til at gemme i en base med.

Du skal bruge suns jdbc-odbc bridge driver, som der også tidligere er postet om mange gange :)
Avatar billede jakoba Nybegynder
02. juli 2002 - 20:50 #2
class KlasseNavn {

    int antal;
    String overskrift;
    KlasseNavn minLillebror = null;

    public KlasseNavn( int initparam1, String initparam2 ) {
            // Constructor er en metode UDEN resultattype.
            // og med klassens opstartværdier som parametre
        antal = initparam1;
        overskrift = initparam2;
        if ( antal > 0 ) {  // bare for at demonstrere et kald af constructoren
            minLillebror = new KlasseNavn( antal-1, overskrift );
        }
    }

} //endclass KlasseNavn

hvis du laver andre klasser indeni den klasse defineres de på præcis samme måde
Avatar billede soelvpil Nybegynder
02. juli 2002 - 20:54 #3
Kig på denne tutorial

http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html

og vend tilbage hertil, hvis der bliver problemer. Så vidt jeg husker er det netop simpel tilgang af en accessdatabase.
Avatar billede r9 Nybegynder
02. juli 2002 - 21:01 #4
Her er et lille eksempel der virker med en mySQL DB:


public class Person {



    public Person () {
    }

    private String fornavn = "";
    private String efternavn = "";
    private String adresse = "";


    public String getFornavn() {
        return fornavn;
    }

    public void setFornavn(String fornavn) {
        this.fornavn = fornavn;
    }

    public String getEfternavn() {
        return efternavn;
    }

    public void setEfternavn(String efternavn) {
        this.efternavn = efternavn;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }



    public void skriveTilDb (){


        DbHandler db = new DbHandler();
        db.open("org.gjt.mm.mysql.Driver","jdbc:mysql://localhost/test","","");
        db.doQuery("insert into navn values ('"+fornavn+"')");
     

    }


}



---------------------------------------


public class Testklasse {


        public static void main(String[] args) {

            Person p = new Person();
            p.setFornavn("per");
            p.setEfternavn("hansen");
            p.setAdresse("dyrevej 4");
            p.skriveTilDb();


        }
}
------------------------------------------------------


import java.sql.*;

public class DbHandler
{

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



Jeg har bruge Disky's velkendte DbHandler.
Avatar billede r9 Nybegynder
02. juli 2002 - 21:03 #5
ups.

Jeg har brugt Disky's...
Avatar billede havmaage Juniormester
02. juli 2002 - 21:06 #6
r9>> det ser rigtig fint ud :-) er det nok hvis jeg laver import java.sql.*;
Eller skal jeg have andre med ?
Avatar billede disky Nybegynder
02. juli 2002 - 21:10 #7
r9:
det er bare helt okay, jeg er bare glad hvis mit kode kan bruges af andre :)

jeg får ikke rodet med SQL meget i øjeblikket, har udelukkende arbejdet med J2ME siden februar
Avatar billede r9 Nybegynder
02. juli 2002 - 21:12 #8
havmaage:

du skal bruge alle disse:
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;


disky:
Tror du J2ME  bliver stort?
Har du prøvet J2ME i forbindelse med en enterprise server?
Avatar billede r9 Nybegynder
02. juli 2002 - 21:14 #9
havmaage:

Jeg har ikke brugt inner-klasses, så du skal lave 3 klasser:

- Person.java
- DbHandler.java
- TestKlasse.java
Avatar billede r9 Nybegynder
02. juli 2002 - 21:16 #10
Disky:

Ejer du www.midlets.dk ?
Avatar billede r9 Nybegynder
02. juli 2002 - 21:21 #11
havmaage:

sådan indsættes alle værdierne
db.doQuery("insert into navn values ('"+fornavn+"',"+ "'"+efternavn+"',"+"'"+adresse+"')");



Her er min database:

# MySQL-Front Dump 2.2
#
# Host: localhost  Database: test
#--------------------------------------------------------
# Server version 3.23.49-nt


#
# Table structure for table 'navn'
#

CREATE TABLE `navn` (
  `fornavn` varchar(24) default NULL,
  `efternavn` varchar(24) default NULL,
  `adresse` varchar(24) default NULL
) TYPE=MyISAM;
Avatar billede havmaage Juniormester
02. juli 2002 - 21:22 #12
r9, det vil vel sige 3 forskeligge java filer, hmmm nu begynder det jo at blive lidt tricky.
skal de bare kompiles ? og så virker det ?. De skal vel importes
Glem db adgang for nu, det er alligevel lidt for stor mundfuld i første omgang (du havde ret disky)

Reduceret målsætning for iaften

Bare klasse person og testklasse til at virke og evt. skrive indholdet af klassen ud  med System.out.println
Avatar billede r9 Nybegynder
02. juli 2002 - 21:30 #13
Ok, der sker så her:


public class Person {



    public Person () {
    }

    private String fornavn = "";
    private String efternavn = "";
    private String adresse = "";


    public String getFornavn() {
        return fornavn;
    }

    public void setFornavn(String fornavn) {
        this.fornavn = fornavn;
    }

    public String getEfternavn() {
        return efternavn;
    }

    public void setEfternavn(String efternavn) {
        this.efternavn = efternavn;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

               

    public void udskriv() {

        System.out.println("fornavn: " + fornavn);
        System.out.println("efternavn: " + efternavn);
        System.out.println("adresse: " + adresse);

    }




}
--------------------------


public class Testklasse {


        public static void main(String[] args) {

            Person p = new Person();
            p.setFornavn("per");
            p.setEfternavn("hansen");
            p.setAdresse("dyrevej 4");
        //    p.skriveTilDb();
            p.udskriv();


        }
}



Begge klasser skal blot compileres, og derefter skal Testklassen afvikles.

Bruger du et dos-vindue til compilering?

Hent en gratis editor her: http://www.jcreator.com/
Så bliver alt meget lettere :-)
Avatar billede disky Nybegynder
02. juli 2002 - 21:33 #14
r9:

import java.sql.*;

er lettere :-)

nej jeg ejer www.midlet.dk som i øjeblikket bliver brugt til noget andet,

J2ME er stort nu og bliver større.
Tro mig det er MEGET sejt.
Avatar billede havmaage Juniormester
02. juli 2002 - 21:35 #15
r9>> har hentet forte fra SUN, desværre har jeg ikke fået min mysql db til at køre efter upgrade til XP. men har planer om at få den til at køre på min linux maskine.
Grunden til disse spørgsmål er at jeg tidligere har rodet lidt med c++ og skal til at læse datanom java. Så vil jeg jo gerne vide lidt inden jeg skal starte og måske lave noget brugbart.
Jeg vil lige prøve denne kode og lege lidt med det.
Avatar billede r9 Nybegynder
02. juli 2002 - 21:39 #16
havmaage:

ok.
Forte er udemærkedet. Du skal blot -->new --->class og så give den navnet: Person.java
Og der samme med Testklassen.
Der skal ikke importeres noget

Disky er faktisk ekspert i Forte :-))
Avatar billede havmaage Juniormester
02. juli 2002 - 21:45 #17
OK det virker fint :-) Jeg er faktisk selv tilhænger af Solaris og unix generalt og hart gode erfaringer med SUN produkter sådan set over den brede kam. Men jeg synes nu forte virker en smule tung til de simple ting jeg roder med på nuværende niveau ... Er det rigtigt at man ikke behøver en descructor i klasser i java, den sørger selv for at rode op i memory ?
Avatar billede disky Nybegynder
02. juli 2002 - 21:49 #18
destructor findes ikke i java, KVM'em ryder selv op når den synes der mangler ram, så destruerer den de objekter der ikke længere er gyldige referencer til.
Avatar billede havmaage Juniormester
02. juli 2002 - 22:21 #19
lige et sidste skrig, for opfølgning
Jeg får følgende fejl:
access.java [5:1] illegal start of expression
            public acc() {
            ^
access.java [34:1] malformed floating point literal
      3.executing a query on the opened connection.
      ^
på denne kode,

import java.sql.*;
public class access {
      public static void main(String[] args) {

            public acc() {

                  // Load the JDBC-ODBC bridge driver
                          try {
                                  Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
                          } catch( ClassNotFoundException ee) { 
                                  ee.printStackTrace();
                          }
              }
                 

      2.open a data source name by means of the jdbcodbcdriver.

          static void open() throws SQLException {

                  // ODBC data source name
                  String dsn = "jdbc:odbc:person";
                  String user = "admin";
                  String password = "";

                  // Connect to the database
                  con = DriverManager.getConnection(dsn," " ," " );

                  // Shut off autocommit
                  con.setAutoCommit(false);

              }


      3.executing a query on the opened connection.

          static void select(String whereClause)  {

              Statement stmt; // SQL statement object
              String query;  // SQL select string
              ResultSet rs;  // SQL query results
              boolean more;  // "more rows found" switch     
              String v1, v2, v3; // Temporary storage results   

              results = new Vector( 10 );

              query = "SELECT  fornavn, efternavn, addresse "
                      + " FROM person";
                   
                                               
                     
                  try {
                stmt = con.createStatement();
                rs = stmt.executeQuery(query);
             
                // Check to see if any rows were read
                more = rs.next();
                  if (!more) {

                      System.out.println("No rows found.");
                      return;

                  }

                  // Loop through the rows retrieved from the query
                  while (more) {

                                  v1 = "ID: " + rs.getInt("fornavn");
                                  v2 = "Name: " + rs.getString("efternavn") + " " + rs.getString("LastName");
                                  v3 = "Title: " + rs.getString("addresse");

                      System.out.println( v1 );
                      System.out.println( v2 );
                      System.out.println( v3 );
                      System.out.println("");   

                                  results.addElement( v1 + "\n" + v2 + "\n" + v3 + "\n");
                      more = rs.next();

                  }

                  rs.close();
                  stmt.close();
                          } catch (SQLException e) {
                                  System.out.println("" + results.size() + " results where found.");
                          }
               
      };
    }
}

public access() metoden har jeg kopieret fra nettet og så har jeg forsøgt at sætte det ind i en klasse som metode.

Hvis jeg lige for den fortalt skulle jeg vel være istand til at sætte et eller andet sammen der kan bruges ? Så vil jeg heller ikke vride mere viden ud af de 60 point :-)
Avatar billede havmaage Juniormester
02. juli 2002 - 22:22 #20
Jeg har lavet odbc source fra windows
Avatar billede r9 Nybegynder
02. juli 2002 - 22:39 #21
smid acc() meotden udenfor din Main.
Hvis din Main er "static", så skal din metode også være "static"

sådan:

import java.sql.*;
public class access {
      public void main(String[] args) {

          acc();


      }

        public void acc() {

                  // Load the JDBC-ODBC bridge driver
                          try {
                                  Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
                          } catch( ClassNotFoundException ee) {
                                  ee.printStackTrace();
                          }
              }
}
Avatar billede r9 Nybegynder
02. juli 2002 - 22:45 #22
Nu kompileres klassen hos mig uden fejl:


import java.sql.*;
import java.util.Vector;

public class access {

    private Connection con;
    private Vector results;

    public void main(String[] args) {

    }

    public void acc() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }


    //    2.open a data source name by means of the jdbcodbcdriver.

    public void open() throws SQLException {

        // ODBC data source name
        String dsn = "jdbc:odbc:person";
        String user = "admin";
        String password = "";

        // Connect to the database
        con = DriverManager.getConnection(dsn, " ", " ");

        // Shut off autocommit
        con.setAutoCommit(false);

    }


    //  3.executing a query on the opened connection.

    public void select(String whereClause) {

        Statement stmt; // SQL statement object
        String query;  // SQL select string
        ResultSet rs;  // SQL query results
        boolean more;  // "more rows found" switch
        String v1, v2, v3; // Temporary storage results

        results = new Vector(10);

        query = "SELECT  fornavn, efternavn, addresse "
                + " FROM person";


        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);

            // Check to see if any rows were read
            more = rs.next();
            if (!more) {

                System.out.println("No rows found.");
                return;

            }

            // Loop through the rows retrieved from the query
            while (more) {

                v1 = "ID: " + rs.getInt("fornavn");
                v2 = "Name: " + rs.getString("efternavn") + " " + rs.getString("LastName");
                v3 = "Title: " + rs.getString("addresse");

                System.out.println(v1);
                System.out.println(v2);
                System.out.println(v3);
                System.out.println("");

                results.addElement(v1 + "\n" + v2 + "\n" + v3 + "\n");
                more = rs.next();

            }

            rs.close();
            stmt.close();
        } catch (SQLException e) {
            System.out.println("" + results.size() + " results where found.");
        }

    }

}
Avatar billede r9 Nybegynder
02. juli 2002 - 22:48 #23
nb. Forte er MEGET ram krævende, og kan mange overflødige ting til alm. java brug.

Jcreator er hurtig, let og gratis:
http://www.jcreator.com/


Min fortrukne editor er dog:
http://www.intellij.com/idea/

Men den er ikke gratis
Avatar billede havmaage Juniormester
02. juli 2002 - 22:51 #24
nu kompilere den også fint her, men når jeg prøver at køre den kommer disse fejl frem

java.lang.NoSuchMethodError: main
Exception in thread "main"


Har jeg ret i at det er en eller anden jdbc driver jeg mangler eller at der er fejl i min dsn forbindelse
Avatar billede havmaage Juniormester
02. juli 2002 - 22:54 #25
er ved at hente jcreator, håber det er lidt lettere at bruge her i starten.
Avatar billede r9 Nybegynder
02. juli 2002 - 23:04 #26
nu burde det virke:

import java.sql.*;
import java.util.Vector;

public class Access {

    private Connection con;
    private Vector results;

    public static void main(String[] args) {
        Access ac = new Access();
        ac.Access();


    }

    public void Access() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }


    //    2.open a data source name by means of the jdbcodbcdriver.

    public void open() throws SQLException {

        // ODBC data source name
        String dsn = "jdbc:odbc:person";
        String user = "admin";
        String password = "";

        // Connect to the database
        con = DriverManager.getConnection(dsn, " ", " ");

        // Shut off autocommit
        con.setAutoCommit(false);

    }


    //  3.executing a query on the opened connection.

    public void select(String whereClause) {

        Statement stmt; // SQL statement object
        String query;  // SQL select string
        ResultSet rs;  // SQL query results
        boolean more;  // "more rows found" switch
        String v1, v2, v3; // Temporary storage results

        results = new Vector(10);

        query = "SELECT  fornavn, efternavn, addresse "
                + " FROM person";


        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);

            // Check to see if any rows were read
            more = rs.next();
            if (!more) {

                System.out.println("No rows found.");
                return;

            }

            // Loop through the rows retrieved from the query
            while (more) {

                v1 = "ID: " + rs.getInt("fornavn");
                v2 = "Name: " + rs.getString("efternavn") + " " + rs.getString("LastName");
                v3 = "Title: " + rs.getString("addresse");

                System.out.println(v1);
                System.out.println(v2);
                System.out.println(v3);
                System.out.println("");

                results.addElement(v1 + "\n" + v2 + "\n" + v3 + "\n");
                more = rs.next();

            }

            rs.close();
            stmt.close();
        } catch (SQLException e) {
            System.out.println("" + results.size() + " results where found.");
        }

    }

}


Jeg har fjernet din acc() metode, og i stedet lagt koden i constructoren på Access klassen. Dermed bliver det udført når du laver et nyt objekt at klassen: Access ac = new Access();
Avatar billede r9 Nybegynder
02. juli 2002 - 23:07 #27
hov. Jeg kan lige se at jeg IKKE har fjernet din acc metode, men blot omdøbt den.

Derfor skal du stadig kalde den fra din main:
Access ac = new Access();
ac.Access();
Avatar billede r9 Nybegynder
02. juli 2002 - 23:09 #28
Hvis du istedet vil have det i constructøren, så SKAL constructøren hedde der samme som klassen selv:

  public Access() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }

Her er det nok at oprette et objekt af klassen, og koden bliver udført:
Access ac = new Access();
Avatar billede havmaage Juniormester
02. juli 2002 - 23:17 #29
hmmm jeg kan compile det, uden problemer men der kommer fejl når jeg kører det.
først prøvede jeg at lave en dns file connection i odbc sources, derefter prøvede jeg system dns men stadig med denne fejl.

Exception in thread "main" java.lang.NoSuchMethodError: main
Press any key to continue...

Det kan jeg ikke lige greje :-)
Avatar billede r9 Nybegynder
02. juli 2002 - 23:19 #30
det er fordi der skal være en Static i din Main.
Prøv denne:

import java.sql.*;
import java.util.Vector;

public class Access {

    private Connection con;
    private Vector results;

    public static void main(String[] args) {
        Access ac = new Access();
        ac.Access();


    }

    public void Access() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }


    //    2.open a data source name by means of the jdbcodbcdriver.

    public void open() throws SQLException {

        // ODBC data source name
        String dsn = "jdbc:odbc:person";
        String user = "admin";
        String password = "";

        // Connect to the database
        con = DriverManager.getConnection(dsn, " ", " ");

        // Shut off autocommit
        con.setAutoCommit(false);

    }


    //  3.executing a query on the opened connection.

    public void select(String whereClause) {

        Statement stmt; // SQL statement object
        String query;  // SQL select string
        ResultSet rs;  // SQL query results
        boolean more;  // "more rows found" switch
        String v1, v2, v3; // Temporary storage results

        results = new Vector(10);

        query = "SELECT  fornavn, efternavn, addresse "
                + " FROM person";


        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);

            // Check to see if any rows were read
            more = rs.next();
            if (!more) {

                System.out.println("No rows found.");
                return;

            }

            // Loop through the rows retrieved from the query
            while (more) {

                v1 = "ID: " + rs.getInt("fornavn");
                v2 = "Name: " + rs.getString("efternavn") + " " + rs.getString("LastName");
                v3 = "Title: " + rs.getString("addresse");

                System.out.println(v1);
                System.out.println(v2);
                System.out.println(v3);
                System.out.println("");

                results.addElement(v1 + "\n" + v2 + "\n" + v3 + "\n");
                more = rs.next();

            }

            rs.close();
            stmt.close();
        } catch (SQLException e) {
            System.out.println("" + results.size() + " results where found.");
        }

    }

}
Avatar billede r9 Nybegynder
02. juli 2002 - 23:24 #31
Har du fået din main() til at virke?

  public static void main(String[] args) {
        Access ac = new Access();
        ac.Access();

        try {
            ac.open();
        }

        catch (SQLException e) {
            e.printStackTrace();
        }


        ac.select("din sql string");



    }
Avatar billede havmaage Juniormester
02. juli 2002 - 23:32 #32
Jep nu virker den :-)

Men hvad med query stríngen i select metoden der laver jeg jo sql, bliver den overskrevet af ac.select("din sql string");
Hvis det er tilfældet er det rigtig godt, nemmere at holde styr på sin sql.


import java.sql.*;
import java.util.Vector;

public class Access {

    private Connection con;
    private Vector results;

    //public static void main(String[] args) {
      //  Access ac = new Access();
        //ac.Access();
public static void main(String[] args) {
        Access ac = new Access();
        ac.Access();

        try {
            ac.open();
        }

        catch (SQLException e) {
            e.printStackTrace();
        }


        ac.select("din sql string");



    }

   

    public void Access() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }


    //    2.open a data source name by means of the jdbcodbcdriver.

    public void open() throws SQLException {

        // ODBC data source name
        String dsn = "jdbc:odbc:person";
        String user = "admin";
        String password = "";

        // Connect to the database
        con = DriverManager.getConnection(dsn, " ", " ");

        // Shut off autocommit
        con.setAutoCommit(false);

    }


    //  3.executing a query on the opened connection.

    public void select(String whereClause) {

        Statement stmt; // SQL statement object
        String query;  // SQL select string
        ResultSet rs;  // SQL query results
        boolean more;  // "more rows found" switch
        String v1, v2, v3; // Temporary storage results

        results = new Vector(10);

        query = "SELECT person.fornavn, person.efternavn, person.Adresse FROM person;";



        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);

            // Check to see if any rows were read
            more = rs.next();
            if (!more) {

                System.out.println("No rows found.");
                return;

            }

            // Loop through the rows retrieved from the query
            while (more) {

                v1 = "ID: " + rs.getInt("fornavn");
                v2 = "Name: " + rs.getString("efternavn"); //+ " " + rs.getString("LastName");
                v3 = "Title: " + rs.getString("addresse");

                System.out.println(v1);
                System.out.println(v2);
                System.out.println(v3);
                System.out.println("");

                results.addElement(v1 + "\n" + v2 + "\n" + v3 + "\n");
                more = rs.next();

            }

            rs.close();
            stmt.close();
        } catch (SQLException e) {
            System.out.println("" + results.size() + " results where found.");
        }

    }

}
Avatar billede r9 Nybegynder
02. juli 2002 - 23:39 #33
Du kan gøre sådan:

  //query = "SELECT  fornavn, efternavn, addresse "
          //      + " FROM person";

        query = whereClause;

Så sender du din-sql string med, når du kalder metoden.
Så bliver programmet mere dynamisk
Avatar billede r9 Nybegynder
02. juli 2002 - 23:40 #34
men ja, den bliver overskrevet. Prøv f.eks. dette:

    public void select(String whereClause) {

        Statement stmt; // SQL statement object
        String query;
        ResultSet rs;  // SQL query results
        boolean more;  // "more rows found" switch
        String v1, v2, v3; // Temporary storage results

        results = new Vector(10);

      query = "SELECT  fornavn, efternavn, addresse "
                + " FROM person";
        System.out.println(query);

        query = whereClause;
        System.out.println(query);
Avatar billede havmaage Juniormester
02. juli 2002 - 23:56 #35
Det eneste der undrer mig nu er at jeg ikke får rsultat af min sql, den siger No rows found selvom det er sql kopieret fra access databasen og så var det jeg tænkte på at jeg jo bruger microsoft driver for Access i min odbc opsætning, men måske jeg skal bruge noget andet i forbindelse med den måde jeg logger på databasen
  // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }


    //    2.open a data source name by means of the jdbcodbcdriver.

    public void open() throws SQLException {

        // ODBC data source name
        String dsn = "jdbc:odbc:person";
        String user = "admin";
        String password = "";

        // Connect to the database
        con = DriverManager.getConnection(dsn, " ", " ");

        // Shut off autocommit
        con.setAutoCommit(false);

    }

Der er ikke password eller noget på basen
Avatar billede havmaage Juniormester
03. juli 2002 - 00:00 #36
sorry, den siger 0 result were found så det ser ud til den kommer på ok
Avatar billede r9 Nybegynder
03. juli 2002 - 00:03 #37
godt :-)
Avatar billede havmaage Juniormester
03. juli 2002 - 00:10 #38
hmmm fik du point, ser ud til at den er røget ned i besvaret, men kan ikke se det her ?

Ellers mange tak for hjælpen endnu engang
Avatar billede r9 Nybegynder
03. juli 2002 - 00:13 #39
takker for point
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