Avatar billede fear Nybegynder
23. marts 2001 - 21:52 Der er 8 kommentarer og
1 løsning

underligt problem med sql i java!!!

jeg har en access 2000 database hvor jeg indsætter nogle data i.
Men følgende linje skal jeg skrive 2 gange for at der bliver oprettet noget i databasen. Hvorfor?

    r=s.executeUpdate(\"INSERT INTO kunde(navn)VALUES(\'\"+q1+\"\')\");



hvis jeg kun skriver den en gang, bliver der ikke oprettet noget! og jeg får ikke nogen fejlmeldning.





**************************************

import java.sql.*;


class DBadgang
{   


public DBadgang()
    {   
   

   
        try            
          {    Class.forName (\"sun.jdbc.odbc.JdbcOdbcDriver\");
        }
          catch (ClassNotFoundException cnfe)
              {   
        System.out.println(cnfe+\"1\");
            }
       
        try
                  {    con = DriverManager.getConnection (\"jdbc:odbc:projekt\");
               
                  }
          catch (SQLException se)
          {   
        System.out.println(se+\"2\");
        }
       
    }

    private Connection con;
    private Statement s;



    public void opret(String q1)
    {Statement s=null;
   
   
               
        try
              {   
       
            s = con.createStatement();
            int r;
   
    //prøv at fjerne en af linjerne, og kig så i databasen!!!
           
            r=s.executeUpdate(\"INSERT INTO kunde(navn)VALUES(\'\"+q1+\"\')\");
            r=s.executeUpdate(\"INSERT INTO kunde(navn)VALUES(\'\"+q1+\"\')\");
            s.close();
                       
                       
            }
                catch (SQLException e)
                {   
                       
                System.out.println(e+\"3\");
                }
       
    }
       


class JDBC
{

public JDBC()

        {
        }
   



  public static void main(String[] args)
  { 
   
            String q1 = \"thomas\";
       
       
           
        DBadgang db     = new DBadgang();
     
        db.opret(q1); 

 
        }



}
Avatar billede nute Nybegynder
23. marts 2001 - 22:58 #1
hvordan ser din commit ut ? har du satt autocommit til on eller off.

/nute
Avatar billede fear Nybegynder
23. marts 2001 - 23:03 #2
jeg forstår ikke helt hvad du mener (autocommit)??

Avatar billede nute Nybegynder
23. marts 2001 - 23:06 #3
EN TING....JEG ½
Avatar billede nute Nybegynder
23. marts 2001 - 23:12 #4
hov...sorry....jeg mener du faktisk skal ha et recordset object som utfører din sql query...

autocommit....du kan i ditt connectionobject angi om du skal committe (\"poste\" din oppdatering til databasen) automatisk ved hver eneste query, eller om du \"manuelt\" skal angi at de forandringene du prøver å eksekvere skal eksekveres....dette kan du forespør om ved å bruke

System.out.println( \"AutoCommit: \" + con.getAutoCommit() );

*men* du skal ha et resultsetobject....

/nute
Avatar billede fear Nybegynder
23. marts 2001 - 23:24 #5
autocommit returner \"true\", men jeg skal stadig have begge linjer for at oprette i DB.

jeg har ikke helt tjek på SQL, kan du ikke smide noget kode, med det \"resultsetobjekt\" som du mener jeg skal bruge.
Avatar billede fear Nybegynder
23. marts 2001 - 23:31 #6
bruger man ikke kun \"executequery\" når man skal søge i databasen?

Jeg skal vel bare bruge \"executeUpdate\"???


Avatar billede dudal Nybegynder
24. marts 2001 - 00:45 #7
du skal bruge et recordset object som nute siger.....det er du nødt til....

/dudal
Avatar billede kama Nybegynder
24. marts 2001 - 14:48 #8
Årsagen er, at din \'main\' terminerer inden opdateringen foretages - Access er simpelthen for langsom!!! Prøv evt. at indsætte en forsinkelses-løkke til sidst i din main.
Avatar billede fear Nybegynder
25. marts 2001 - 12:56 #9
Kama\'s svar var det rigtige. Access er simpelhen for langsom. Det virkede med en forsinkelses-løkke.
Tak

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