Hey udviklere,
jeg sidder og arbejder på mit eksamenprojekt til Programmering C på HTX, men er stødt på et MEGET irriterende problem.
Jeg bruger i mit program en .mdb database til at gemme forskellige ting og sager til programmet, og der er som sådan heller ikke noget problemet med dette. Det fungerer som det skal - på min stationære computer i hvert fald.
Når jeg forsøger at køre programmet på min bærbare (og ja, det er præcis det samme da det bliver synkroniseret via Dropbox) fungerer det ikke længere. Placeringen af .mdb filen er relativ i forhold til placeringen af programmet, og det kan derfor ikke have noget med det at gøre.
Finder det meget mærkeligt at det virker det ene sted og ikke det andet.
Begge steder kører jeg programmet i Netbeans.
Jeg har tjekket at det ikke er nogle dumme ÆØÅ fejl, og har endda startet et helt nyt projekt med samme kode for at teste om det var en fejl opstået i forbindelse med oprettelsen af projektet.
På min bærbare får jeg følgende output:
ID Godkendt!
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Datakildenavnet blev ikke fundet, og der er ikke angivet en standarddriver.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
ID Godkendt!
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at billetsystem.Database.getConnection(Database.java:8)
at billetsystem.HandleDatabase.doExecute(HandleDatabase.java:18)
at billetsystem.Guests.attendStudent(Guests.java:14)
at billetsystem.Main.main(Main.java:16)
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Datakildenavnet blev ikke fundet, og der er ikke angivet en standarddriver.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at billetsystem.Database.getConnection(Database.java:8)
at billetsystem.HandleDatabase.doExecute(HandleDatabase.java:18)
at billetsystem.Guests.removeStudent(Guests.java:24)
at billetsystem.Main.main(Main.java:17)
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Datakildenavnet blev ikke fundet, og der er ikke angivet en standarddriver.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at billetsystem.Database.getConnection(Database.java:8)
at billetsystem.HandleDatabase.doExecuteQuery(HandleDatabase.java:45)
at billetsystem.Guests.allGuests(Guests.java:38)
at billetsystem.Main.main(Main.java:34)
BUILD SUCCESSFUL (total time: 1 second)
Hvor jeg på min stationære får det output jeg skal have..
Filerne ser ud som følger:
Main.java:
- /**
- * Eksamensprojekt til Programmering C
- * Simon R. Smith
- * 2.A OTG 2011
- * @author Simon R. Smith
- */
- package billetsystem;
- import javax.swing.*;
- import java.util.*;
- public class Main extends JFrame
- {
- private static Scanner tastatur = new Scanner(System.in);
- public static void main(String args[])
- {
- Guests guests = new Guests();
- guests.attendStudent(3);
- guests.removeStudent(2);
- guests.allGuests();
- }
- }
Guests.java:
- package billetsystem;
- import java.sql.*;
- public class Guests {
- private HandleDatabase db = new HandleDatabase();
- public Guests()
- {
- //
- }
- public void attendStudent(int id)
- {
- if(id>=0)
- {
- this.doPrint("ID Godkendt!");
- this.db.doExecute("UPDATE students SET attending='1' WHERE id="+id);
- }
- else
- this.doPrint("ID ikke godkendt!");
- }
- public void removeStudent(int id)
- {
- if(id>=0)
- {
- this.doPrint("ID Godkendt!");
- this.db.doExecute("UPDATE students SET attending='0' WHERE id="+id);
- }
- else
- this.doPrint("ID ikke godkendt!");
- }
- public void addGuest(String theName,String address, String postal, String city, int student, String ticketSerial, String phone, String comment)
- {
- if(theName!=""&&address!=""&&postal!=""&&city!=""&&student!=0&&ticketSerial!="")
- this.db.doExecute("INSERT INTO guests (theName,address,postal,city,student,comment,ticket_serial,phone) VALUES ('"+theName+"','"+address+"','"+postal+"','"+city+"',"+student+",'"+comment+"','"+ticketSerial+"','"+phone+"')");
- else
- this.doPrint("Ikke aller værdier blev udfyldt korrekt!");
- }
- public void allGuests()
- {
- this.db.doExecuteQuery("SELECT * FROM guests ORDER BY theName ASC");
- }
- private void doPrint(String text)
- {
- System.out.println(text);
- }
- }
HandleDatabase.java:
- package billetsystem;
- import java.sql.*;
- /**
- *
- * @author Simon Smith
- */
- public class HandleDatabase {
- private Connection dbConn;
- public void doExecute(String sql)
- {
- try
- {
- this.dbConn = Database.getConnection();
- Statement stmt = dbConn.createStatement();
- stmt.execute(sql);
- stmt.close();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- try
- {
- if(this.dbConn!=null)
- this.dbConn.close();
- }
- catch(Exception e)
- {
- //
- }
- }
- }
- public void doExecuteQuery(String sql)
- {
- try
- {
- ResultSet rs = null;
- this.dbConn = Database.getConnection();
- Statement stmt = dbConn.createStatement();
- rs = stmt.executeQuery(sql);
- while(rs.next())
- {
- System.out.println(rs.getString("theName")+" der bor på "+rs.getString("address")+"\n"+rs.getString("postal")+" "+rs.getString("city"));
- }
- rs.close();
- stmt.close();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- try
- {
- if(this.dbConn!=null)
- this.dbConn.close();
- }
- catch(Exception e)
- {
- //
- }
- }
- }
- }
Database.java:
- package billetsystem;
- import java.sql.*;
-
- public class Database {
- public static Connection getConnection() throws Exception
- {
- Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
- Connection c = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=db.mdb");
- return c;
- }
- }
På forhånd mange tak!