Avatar billede havmaage Juniormester
14. juli 2002 - 13:55 Der er 7 kommentarer og
1 løsning

Stadig problem med insert into Access database

Hej igen igen :-) jeg har 3 klasser, Access, simse og input

Hvor simse er main klasse.
Derfra kalder jeg input, som henter oplysninger for insert into i databasen. Derfra kaldes sql i Access klassen. Der er ikke ingen fejl under compilering eller exe, men der bliver bare ikke opdateret ? Hvis jeg kalder Access klasdsen direkte fra main metode i simse klassen fungerer det ok. Følgende er de 3 klassers kode, Jeg er nybegynder i java og ved at koden ikke er "smuk" men kfor nu vil jeg bare have det til at fungere :-)

simse.java

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

class simse {
   
       
        public static void main(String[] args) throws IOException{
                 
                input in = new input();
             
             
                in.input();
             
                             
Dette virker faktisk ??            //    A.execSql("insert into person ( fornavn,efternavn,Adresse) values ('Busse','Jansen','GGiollavej 30')");   
                   
           
                       
   
    }       

}


input.java

import java.sql.*;
import java.io.*;
public class input {


 
public static void input() throws IOException {
        BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
        String FirstName, SirName, Address;

      System.out.println ("Type your firstname:");
      FirstName = stdin.readLine();
      System.out.println ("Type your Sir Name:");
      SirName =stdin.readLine();
      System.out.println ("Type your Addresse:");
      Address=stdin.readLine();
      Access dba = new Access();
      dba.Access();
    try {
                dba.open();
                } catch (SQLException e) {
                  e.printStackTrace();
              }
             
  String sql = "insert into person ( fornavn,efternavn,Adresse) values ('"+FirstName+"', '"+SirName+"', '"+Address+"')";
  System.out.println(sql);
  dba.execSql(sql);


   
         
       
   
    }
}

Access.java

//Dette virker i min Access:
import java.sql.*;
import java.util.Vector;


public class Access {

    private Connection con;
    private Vector results;

   
 


    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.
// udfør sql statement uden resultset
    public  void execSql(String sql) {

        try {
            Statement stmt = con.createStatement();
            stmt.execute(sql);
        } catch(Exception e) {e.printStackTrace();}

    }
    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(true);

    }


// udtræk fra databasen, resultatet består af en sekvens af felter
    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));
                        //System.out.println(data);
                    }
                } else {
                    data.add(rs.getString(1));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return data;
    }


}



Håber der er nogen der kan hjælpe det er blevet lidt en hurdle for mig at få det til at virke.
Avatar billede aslan Nybegynder
15. juli 2002 - 00:00 #1
Brokker den sig slet ikke over noget når du kører denne?
Avatar billede havmaage Juniormester
15. juli 2002 - 00:16 #2
Nej det gør den faktisk ikke, der er ingen fejl beskeder under compilering eller exekvering. Den gør det bare ikke ? et eller andet sted så kan det jo være en eller anden bug i java. Jeg kører 1.3.1_04 Der er vist stadig bugs i kan jeg se rundt i andre spørgsmål
Avatar billede aslan Nybegynder
15. juli 2002 - 00:42 #3
Hvorfor er du ikke gået over til det sidste nye?
Avatar billede aslan Nybegynder
15. juli 2002 - 00:45 #4
Nu bruger jeg selv mysql,men prøv lige således så kan det være at den brokker sig....

    try {
                dba.open();
             
  String sql = "insert into person ( fornavn,efternavn,Adresse) values ('"+FirstName+"', '"+SirName+"', '"+Address+"')";
  System.out.println(sql);
  dba.execSql(sql);
                } catch (SQLException e) {
                  e.printStackTrace();
                }
Avatar billede havmaage Juniormester
15. juli 2002 - 00:46 #5
Som du nok har fundet ud af i det andet spørgmål  så er jeg totalt nybegynder i java (fulgte en toturial til installation), men du har ret, jeg burde skifte til det nyeste. Tror jeg vil gøre det imorgen.
Avatar billede havmaage Juniormester
15. juli 2002 - 00:55 #6
Har lige prøvet igen, der kommer ingen fejl, Det er sgu mærkeligt. Når metoden exeSqwl bliver kaldt direkte fra main " no problems" men når jeg vil kalde den fra input klassen så gør den ingenting. Jeg sikret mig at db kan opdateres etc..
Avatar billede soelvpil Nybegynder
17. juli 2002 - 11:12 #7
Jeg tvivler på det er årsagen til probemet, men prøv alligevel at fjerne linjen

dba.Access();

fra din input-klasse. Du udfører jo allerede metoden, når du siger new Access();
Avatar billede havmaage Juniormester
18. juli 2002 - 20:00 #8
soelpil det hjalp desværre heller ikke hmmmm jeg synes efterhånden der er totalt mærkeligt :-)
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