21. november 2008 - 18:53
Der er
13 kommentarer og 1 løsning
Oprette forbindelse og udskrive værdier til Access Database
Hej. Er det på nogen måde muligt at oprette forbindelse til en MS Access Database med Java? Hvordan skal det i praktisk foregå, og hvordan kan jeg udskrive de indeholdende recordset. På forhånd tak.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
21. november 2008 - 18:59
#1
JDBC-ODBC bridgen og ODBC. Ikke super robust - brug det kun i singlethreaded context.
21. november 2008 - 19:00
#2
Med DSN: import java.sql.*; public class DsnLess { public static void main(String[] args) throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:TestMSAccess"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM T1"); while(rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2)); } } } Uden DSN: import java.sql.*; public class DsnLess { public static void main(String[] args) throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\\Database\\MSAccess\\Test.mdb;Uid=Admin;Pwd=;"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM T1"); while(rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2)); } } }
21. november 2008 - 19:36
#3
Super. Det virker. Hvad så hvis man skal tilføje nye værdier i sin tabel? Hvad kan man så gøre?
21. november 2008 - 19:39
#4
Og iøvrigt, du siger det ikke er super robust. Jeg regner med at der skal være en stor mængde data. Vil det have nogen indflydelse på "behandlingstiden"? Og findes der eventuelt en hurtigere eller mere pålidelig løsning?
21. november 2008 - 19:43
#5
Du insaetter med en INSERT statement. Statement isn = con.createStatement(); ins.executeUpdate("INSERT ...");
21. november 2008 - 19:47
#6
Access er ikke til meget store datamaengder generelt. Og JDBC-ODBC bridgen duer ikke til multithreaded brug. Der er masser af andre muligheder for database. Vil du have en embedded eller en server som koerer i egen process ? Et par oplagte var HSQLDB og Derby. Den foerste bruges af OpenOffice. Den anden kommer standard med Java 1.6 !
21. november 2008 - 19:54
#7
Jeg regner med at databasen kommer over 100.000 recordset. Jeg ønsker egentlig bare lidt ligesom access hvor databasen ligger i samme mappe som min java-fil. Jeg er ikke helt inde i hvordan det foregår, men du kan sikkert anbefale det bedst mulige.
21. november 2008 - 20:02
#8
Jeg har forsøgt at tilføje nogle værdier: Connection con2 = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Users\\Peter\\Desktop\\db.mdb;Uid=;Pwd=;"); Statement ins = con2.createStatement(); ins.executeUpdate("INSERT INTO tabel1 (Name) VALUES ('Knud')"); Det ser dog ikke ud til at virke. Gør jeg noget forkert?
21. november 2008 - 20:06
#9
Nej - det ser rigtigt ud. Hvilken fejl faar du ? PS: I modsaetning til den skod kode jeg postede saa skal du huske at close baade ResultSet, Statement og Connection.
21. november 2008 - 20:07
#10
Hvis en raekke ikke er for lang og applikationen er singlethreaded, saa kan Acces sagtens bruges til 100000 raekker. Hvis du satser paa at altid at bruge Java 1.6 eller nyere saa var Java DB alias Derby meget oplagt efter min mening.
21. november 2008 - 20:14
#11
Problemet er, at den ikke giver nogen fejl. Den opdaterer dog ikke databasen. Det virker lidt mystisk. Jeg tror jeg kigger lidt på det med de andre databaser lidt senere. I første omgang prøver jeg kræfter med Access.
21. november 2008 - 20:17
#12
Nu har jeg fået det til at virke. Jeg tilføjede ins.close(); con2.close(); Tror måske det var det der gjorde udslaget.
21. november 2008 - 20:30
#13
Ind til videre synes jeg du skal poste et svar. Så vil jeg læse lidt om de to databasetyper du anbefalte. Så kan jeg oprette en ny tråd og tage fat i emnet. Tak for hjælpen.
21. november 2008 - 20:54
#14
OK
Kurser inden for grundlæggende programmering