http://sourceforge.net/projects/firebird
Hier kun je de JDBC driver afhalen, en dan gewoon over de JDBC 'brug' praten met dat ding.
Voor meer info over JDBC, zie http://java.sun.com/docs/books/tutorial/jdbc/index.html
Hier kun je de JDBC driver afhalen, en dan gewoon over de JDBC 'brug' praten met dat ding.
Voor meer info over JDBC, zie http://java.sun.com/docs/books/tutorial/jdbc/index.html
[ Voor 0% gewijzigd door Glimi op 06-09-2002 17:49 . Reden: kleine nuance ]
Heb ik dus gedaan 
Deze code heb ik dus gebruikt, en het zou moeten werken in theorie!!!
Maar dat doet het dus niet!!
p.s.
Password username zijn gewoon standaard values met Firebird, dus ik ben niet vergeten ze weg te halen
Java Server Page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| <html> <head> <basefont face="Arial"> </head> <body> <%@ page language="java" import="java.sql.*" %> <%! // define variables String UId; String FName; String LName; // define database parameters String host="localhost"; String user="SYSDBA"; String pass="masterkey"; String db="people"; String conn; %> <table border="2" cellspacing="2" cellpadding="5"> <tr> <td><b>Owner</b></td> <td><b>First name</b></td> <td><b>Last name</b></td> </tr> <% Class.forName("org.firebirdsql.jdbc.FBDriver"); // create connection string conn = "jdbc:firebirdsql://"; + host + "/" + db + "?user=" + user + "&password=" + pass; // pass database parameters to JDBC driver Connection Conn = DriverManager.getConnection(conn); // query statement Statement SQLStatement = Conn.createStatement(); // generate query String Query = "SELECT * FROM people"; // get result ResultSet SQLResult = SQLStatement.executeQuery(Query); while(SQLResult.next()) { out.println("boe"); out.println("<tr><td>" + UId + "</td><td>" + FName + "</td><td>" + LName + "</td></tr>"); } // close connection SQLResult.close(); SQLStatement.close(); Conn.close(); %> </table> </body> </html> |
Deze code heb ik dus gebruikt, en het zou moeten werken in theorie!!!
Maar dat doet het dus niet!!
p.s.
Password username zijn gewoon standaard values met Firebird, dus ik ben niet vergeten ze weg te halen
Staat er in conn niet een ';' teveel? Net achter firebirdsql://"MATANDO schreef op 06 september 2002 @ 18:13:
Heb ik dus gedaan
Java Server Page:
1 2 3 4 5 6 // create connection string conn = "jdbc:firebirdsql://"; + host + "/" + db + "?user=" + user + "&password=" + pass; out.println("<tr><td>" + UId + "</td><td>" + FName + "</td><td>" + LName + "</td></tr>");
Hoeft er geen toewijzing plaats te vinden van de resultset['UId'] aan UId? Zoals het er nu uitziet zijn UId, FName en LName ongedefinieerde strings.
heb je ook een foutmelding?
btw:
Connection Conn = DriverManager.getConnection(conn);
Is niet echt netjes, je hebt 2 variabelen die dezelfde naam hebben en alleen maar verschillen in de hoofdletter.
ten tweede is het de conventie dat je Object namen niet met een hoofdletter begint.
btw:
Connection Conn = DriverManager.getConnection(conn);
Is niet echt netjes, je hebt 2 variabelen die dezelfde naam hebben en alleen maar verschillen in de hoofdletter.
ten tweede is het de conventie dat je Object namen niet met een hoofdletter begint.
Ik heb grotendeels van deze pagina gekopieerd uit een voorbeeld omdat ik schijtziek werd dat het niet lukte. UId, FName en LName worden wel gedefineerd, ze krijgen alleen nergens waarden.
Hmm, ik zou hoe dan ook even een try/catch om dat statement dat de connectie aanmaakt heen zetten. Dat zorgt er in ieder geval voor dat je beter dan nu kunt zien wat er fout gaat. Verder zou je ook kunnen proberen om een van de andere getConnection() methods van de DriverManager te gebruiken. Zelf gebruik ik meestal getConnection(ConnStr, user, pwd). Scheelt je ook weer een string concatenatie...MATANDO schreef op 09 september 2002 @ 01:11:
Ik heb grotendeels van deze pagina gekopieerd uit een voorbeeld omdat ik schijtziek werd dat het niet lukte. UId, FName en LName worden wel gedefineerd, ze krijgen alleen nergens waarden.
With the light in our eyes, it's hard to see.
Ik heb de code nu even wat compacter en netter gemaakt + de try/catch statement erin gezet.
Maar ik krijg nog steeds een foutmelding!
De foutmelding is:
org.apache.jasper.JasperException: Unable to compile class for JSP
en dan een hele lap text en een wat beter leesbare error:
Generated servlet error:
[javac] Compiling 1 source file
**** cannot resolve symbol
symbol : class SQLNullException
location: class org.apache.jsp.index_jsp
} catch (SQLNullException null_exception) {
^
1 error
Dit is de code nu. Enig idee wat er nu fout gaat?
Maar ik krijg nog steeds een foutmelding!
De foutmelding is:
org.apache.jasper.JasperException: Unable to compile class for JSP
en dan een hele lap text en een wat beter leesbare error:
Generated servlet error:
[javac] Compiling 1 source file
**** cannot resolve symbol
symbol : class SQLNullException
location: class org.apache.jsp.index_jsp
} catch (SQLNullException null_exception) {
^
1 error
Dit is de code nu. Enig idee wat er nu fout gaat?
Java Server Page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| <%@ page language="java" import="java.sql.*" %> <%! // define database parameters String host="localhost"; String user="SYSDBA"; String pass="masterkey"; String db="people"; String conn; Class.forName("org.firebirdsql.jdbc.FBDriver"); // create connection string conn = "jdbc:firebirdsql://" + host + "/" + db + "?user=" + user + "&password=" + pass; // pass database parameters to JDBC driver Connection connect = DriverManager.getConnection(conn); // query statement Statement SQLStatement = connect.createStatement(); // generate query String Query = "SELECT * FROM people"; // get result ResultSet SQLResult = SQLStatement.executeQuery(Query); try { while(SQLResult.next()) { out.println("boe"); } } catch (SQLNullException null_exception) { System.out.println("SQLNullException " + null_exception); } catch (SQLException exception) { System.out.println("SQLException " + exception); } // close connection SQLResult.close(); SQLStatement.close(); connect.close(); %> |
SQLNullException is geen standaard SQL exception (in mijn JavaDoc bij JDK1.3.1, that is). Wat je nu ziet is een, waarschijnlijk terechte melding van de Java-compiler, omdat er geen class SQLNullException te vinden is. Probeer eens alle mogelijke exceptions te vangen met
code:
. Dat zou in ieder geval moeten compileren, want nu wordt je JSP niet eens uitgevoerd vanwege deze compileerfout.
1
| catch (Exception e) {......} |
With the light in our eyes, it's hard to see.
Ik heb een andere code geprobeerd nu, en die komt al een stuk verder, hij kan alleen geen connectie maken met de DB, dit is mijn code daarvoor:
Ik heb weinig ervaring met connectie maken naar een db, alleen met MS sql server weet ik het, misschien doe ik iets heel simpels fout.
Iemand een idee?
Java Server Page:
1
| conn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:../examples/EMPLOYEE.GDB","SYSDBA","masterkey"); |
Ik heb weinig ervaring met connectie maken naar een db, alleen met MS sql server weet ik het, misschien doe ik iets heel simpels fout.
Iemand een idee?
Wat voor melding krijg je? Als het iets is als "Could not create socket" dan probeert de driver wel een connectie te openen naar de database, maar kan íe die niet vinden.
Ik vind de connection string die je gebruikt er nogal typisch uitzien. Ik zou eerder iets verwachten als
Ik vind de connection string die je gebruikt er nogal typisch uitzien. Ik zou eerder iets verwachten als
code:
Kijk nog eens goed naar welk portnummer Firebird gebruikt om naar inkomende requests te luisteren....
1
| jdbc:firebirdsql://localhost:3050.... |
With the light in our eyes, it's hard to see.
SQLException: Problem getting connection: could not get a db connection!
deze melding krijg ik, port 3050 vond ik op veel pagina's op het internet, ik heb geen idee hoe ik het portnr. van firebird kan vinden verder
Ik heb overigens nu:
deze melding krijg ik, port 3050 vond ik op veel pagina's op het internet, ik heb geen idee hoe ik het portnr. van firebird kan vinden verder
Ik heb overigens nu:
Java Server Page:
1
| ("jdbc:firebirdsql://localhost:3050:../examples/EMPLOYEE.GDB", "SYSDBA", "masterkey"); |
OK, ik heb ook even geGoogled en kwam op deze pagina een stuk code tegen waarin dezelfde demo-database gebruikt wordt. Relevante stukken code:
Je ziet meteen dat mijn suggestie over die connection string blijkbaar niet opgaat voor FireBird (ik heb alleen ervaring met Oracle en MS SQL Server). Blijkbaar moet je precies aangeven in welke file de database die je wilt aanspreken te vinden is. Haal die aanroep van de feedback functie weg en laat elke exception die je catcht een printStacktrace() doen. Ben benieuwd of dit dan wel werkt. Succes!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| String pathToDatabase = "C:\\Program Files\\Firebird\\examples\\EMPLOYEE.GDB";
String userName = "sysdba";
String password = "masterkey";
String sql = "SELECT * FROM EMPLOYEE";
// Load the FireBird driver.
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
} catch(ClassNotFoundException cnfe) {
feedback("org.firebirdsql.jdbc.FBDriver not found");
return;
}
// Retrieve a connection.
try {
Statement stmt = null;
ResultSet rst = null;
Connection conn = DriverManager.getConnection(
"jdbc:firebirdsql:localhost/3050:" + pathToDatabase, userName, password);
try {
// Create a statement and retrieve its result set.
stmt = conn.createStatement();
rst = stmt.executeQuery(sql);
// Show the result set through the standard output.
int columnCount = rst.getMetaData().getColumnCount();
int recordIndex = 0;
while(rst.next()) {
recordIndex++;
System.out.println("Record: " + recordIndex);
for (int i=1;i<=columnCount;i++) {
System.out.print(rst.getMetaData().getColumnName(i));
System.out.print(": ");
System.out.println(rst.getString(i));
}
}
} finally {
// close the database resources immediately, rather than waiting
// for the finalizer to kick in later
if (rst != null) rst.close();
if (stmt != null) stmt.close();
conn.close();
}
} catch(SQLException se) {
feedback(se.toString());
se.printStackTrace();
} |
Je ziet meteen dat mijn suggestie over die connection string blijkbaar niet opgaat voor FireBird (ik heb alleen ervaring met Oracle en MS SQL Server). Blijkbaar moet je precies aangeven in welke file de database die je wilt aanspreken te vinden is. Haal die aanroep van de feedback functie weg en laat elke exception die je catcht een printStacktrace() doen. Ben benieuwd of dit dan wel werkt. Succes!
With the light in our eyes, it's hard to see.
Die pagina had ik al gezien, maar als ik hem in zijn geheel overneem, dan fucked die mijn page up. Echter heb ik bepaalde elementen eruitgehaald en in een andere pagina gedaan.
En dan kom ik al weer een klein stukje verder.
Nu krijg ik de error:
SQLException: GDSException: org.firebirdsql.gds.GDSException: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 21 .
En dan kom ik al weer een klein stukje verder.
Nu krijg ik de error:
SQLException: GDSException: org.firebirdsql.gds.GDSException: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 21 .
Ik heb hem werkend!!!!!!!
Iedereen bedankt voor hun hulp!
Java Server Page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| <% String pathToDatabase = "C:\\Program Files\\Firebird\\examples\\EMPLOYEE.GDB"; String userName = "SYSDBA"; String password = "masterkey"; String sql = "SELECT * FROM EMPLOYEE"; Connection conn = null; try { Class.forName("org.firebirdsql.jdbc.FBDriver"); conn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:" + pathToDatabase, userName, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM country"); //Print start of table and column headers out.println("<TABLE CELLSPACING=\"0\" CELLPADDING=\"3\" BORDER=\"1\">"); out.println("<TR><TH>ID</TH><TH>NAME</TH></TR>"); //Loop through results of query. while(rs.next()) { out.println("<TR>"); out.println("<TD>" + rs.getString("country") + "</TD>"); out.println("<TD>" + rs.getString("currency") + "</TD>"); out.println("</TR>"); } out.println("</TABLE>"); } catch(SQLException e) { out.println("SQLException: " + e.getMessage() + "<BR>"); while((e = e.getNextException()) != null) out.println(e.getMessage() + "<BR>"); } catch(ClassNotFoundException e) { out.println("ClassNotFoundException: " + e.getMessage() + "<BR>"); } finally { //Clean up resources, close the connection. if(conn != null) { try { conn.close(); } catch (Exception ignored) {} } } %> |
Iedereen bedankt voor hun hulp!
Pagina: 1