Avatar billede foo_baa Nybegynder
29. juli 2002 - 21:08 Der er 8 kommentarer og
1 løsning

har databasen ændret sig

kan man på en nem måde gå ind og lave en metode der kigger efter om der er kommet flere poster i ens MySQL database, hvis der er så kør et eller andet - hvis ikke, så gør intet. ???
Avatar billede webben Nybegynder
29. juli 2002 - 21:17 #1
du kan vel gemme id'et på den nyeste linie som du har udskrevet.... den kan du jo bare sammeligne med den øverste i databasen... hvis ikke så og hvis så noget andet :D
Avatar billede foo_baa Nybegynder
29. juli 2002 - 21:32 #2
øhh nej
Avatar billede r9 Nybegynder
29. juli 2002 - 21:52 #3
select COUNT(*) from brugere
så får du antal rækker i din tabel.

Du kan jo gemme værdien i en int, og senere køre samme sql igen, og sammenligne dine int's.
Avatar billede foo_baa Nybegynder
29. juli 2002 - 22:48 #4
arr - det lyder mere som noget jeg kunne bruge - jeg ser lige om jeg kan få dette omsat til noget brugbart java kode :)
Avatar billede foo_baa Nybegynder
29. juli 2002 - 23:02 #5
der er ikke en måde hvorpå man kan gå ind og læse databasens størrelse ???
Avatar billede r9 Nybegynder
13. august 2002 - 19:56 #6
det er ikke smart at kigge på størrelse, da den kan være ændret ved at nogle eksisterende rækker er opdateret!!!

Og du vil jo kun have af vide om der er tilføjer nye rækker.

Brug count
Avatar billede foo_baa Nybegynder
17. august 2002 - 12:43 #7
njaaa, men hvad nu hvis der er ændret noget i nogle af de rækekr der allerede er i databasen, det kan jeg jo heller aldrig tjekke om der er ? Eller hvad
Avatar billede foo_baa Nybegynder
21. august 2002 - 15:57 #8
ok r9, men hvordan vil dette så se ud som javakode
Avatar billede r9 Nybegynder
21. august 2002 - 18:43 #9
Det smarteste er nok at tæller antal rækker i en tabel, og sammenligne det med en værdi som du har gemt i databasen.
Hvis de ikke er ens, så har databasen ændret sig. Herefter skal du lige huske at sætter "tælleren" i databasen til den nye værdi.

Dette virker hos mig, med en mySQL db.


import java.util.Vector;

/*
* Date: 21-08-2002
*/

public class dbChange {



    private String msg = "";

    public String change() {
        int count = 0;
        DbHandler db = new DbHandler();
        db.open("org.gjt.mm.mysql.Driver", "jdbc:mysql://localhost/test", "", "");

        //tæller antal rækker i den tabel som du vil se om er ændret
        String sql = "select COUNT(*) from navn";
        Vector v = db.doQuery(sql);
        int temp = Integer.parseInt((String)v.elementAt(0));
        System.out.println("temp " + temp);

        //henter vores "tæller" værdi fra databasen. Den skal vi bruge til sammenligningen
        String taeller = "select * from taeller";
        Vector b = db.doQuery(taeller);
        int t = Integer.parseInt((String)b.elementAt(0));
        System.out.println("tæller: " + t);

        //hvis der ikke er nogle rækker er vi ligeglade
        if (v == null && v.size() == 0) {
            msg = "ingen rækker fundet!!";
        }


        //hvis antal rækker er forskellig fra vores "tæller" værdi, så sætter vi værdien til antal rækker
        if (t != temp) {
            msg = "databasen har ændret sig!!";
            db.doUpdate("delete from taeller");
            db.doUpdate("insert into taeller (taeller) values (" + temp +")");
            count = temp;

        }

        else {
          msg = "Databasen har ikke ændret sig";
        }

        return msg;

    }


    public static void main(String[] args) {
        dbChange db = new dbChange();
        System.out.println(db.change());



    }


}








Her er databasen klassen:


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

public class DbHandler extends Object
{

    private Connection con=null;


    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 Vector doQuery(String sqlUdtryk) {
        ResultSet rs = null;
        Vector data = new Vector();
        try {
            Statement stmt = con.createStatement();
            rs = stmt.executeQuery(sqlUdtryk);
            ResultSetMetaData rsmd = rs.getMetaData();

            int numberOfColumns = rsmd.getColumnCount();

              while(rs.next()) {
                  if(numberOfColumns > 1) {
                    for(int i = 1; i <= numberOfColumns; i++) {
                        data.add(rs.getString(i));
                    }
                }
                  else {
                    data.add(rs.getString(1));
                }
            }
        } catch(SQLException e) {
        }
        return data;
    }
}






Og et database dump:

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



#
# Dumping data for table 'navn'
#
INSERT INTO navn VALUES("per","hansen","vej 3");
INSERT INTO navn VALUES("sdf","sdf","sdf");
INSERT INTO navn VALUES("dfg","dfg","dfg");
INSERT INTO navn VALUES("sdf","sdfg","sef");


#
# Table structure for table 'taeller'
#

CREATE TABLE `taeller` (
  `taeller` int(24) unsigned default '0'
) TYPE=MyISAM;



#
# Dumping data for table 'taeller'
#
INSERT INTO taeller VALUES("4");
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