Ik heb de volgende 3 classes:
FormServlet (Servlet: geeft een output van een normaal formulie met inhoud een werknemersnaam)
DBServlet (Servlet: heeft als doel informatie uit een query netjes in een table te zetten)
DataModule1 (Datamodule: zorgt voor de DB connectie en geeft uitkomst van de query aan DBServlet)
Nou lijkt me de broncode van FromServlet niet echt van belang, dus zal ik die alleen van DBServlet en DataModule1 geven.
Nu is mijn probleem het volgende:
De eerste keer dat ik naar een werknemer zoek gaat prima, maar op het moment dat ik voor de 2de keer een werknemer zoek dan geeft ie alleen de informatie van de eerste keer. Pas op het moment dat ik de server opnieuw start dan geeft ie andere waarde er in. Wat kan ik hier dus aan doen?
FormServlet (Servlet: geeft een output van een normaal formulie met inhoud een werknemersnaam)
DBServlet (Servlet: heeft als doel informatie uit een query netjes in een table te zetten)
DataModule1 (Datamodule: zorgt voor de DB connectie en geeft uitkomst van de query aan DBServlet)
Nou lijkt me de broncode van FromServlet niet echt van belang, dus zal ik die alleen van DBServlet en DataModule1 geven.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
| package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.borland.dx.dataset.*;
import com.borland.dx.sql.dataset.*;
import com.borland.datastore.*;
public class DBServlet extends HttpServlet {
static final private String CONTENT_TYPE = "text/html";
String WerknemersNaam;
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
DataModule1 dm = servlet.DataModule1.getDataModule(WerknemersNaam);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
Column[] columns = dm.queryDataSet1.getColumns();
out.println ("<table><tr>");
for (int i=1; i < columns.length; i++) {
out.print("<th>" + columns[i].getCaption() + "</th>");
}
out.println("</tr>");
dm.queryDataSet1.first();
while (dm.queryDataSet1.inBounds()) {
out.print("<tr>");
for (int i = 1; i < columns.length; i++) {
out.print ("<td>" + dm.queryDataSet1.format(i) + "</td>");
}
out.println("</tr>");
dm.queryDataSet1.next();
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>DBServlet</title></head>");
out.println("<body>");
WerknemersNaam = request.getParameter("UserName");
doGet(request, response);
out.println("</body></html>");
}
//Clean up resources
public void destroy() {
}
} |
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| package servlet;
import com.borland.dx.dataset.*;
import com.borland.dx.sql.dataset.*;
public class DataModule1 implements DataModule {
static private DataModule1 myDM;
static public String WerknemersNaam;
Database database1 = new Database();
QueryDataSet queryDataSet1 = new QueryDataSet();
public DataModule1() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT werknemer.\"Nummer werknemer\",werknemer.\"Naam werknemer\",werknemer.\"Telefoon " +
"werknemer\",werknemer.\"AfdelingsId werknemer\",werknemer.\"Naam afdeling\",werknemer.\"Naam " +
"chef van afdeling\" FROM\"C:\\Java\\testprakticum\\Werknemer\".werknemer " +
"WHERE werknemer.\"Naam werknemer\"=\'" + WerknemersNaam +"\'", null, true, Load.ALL));
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:Werknemer", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
queryDataSet1.open();
}
public void insertNewRow(String userName, String userComment) {
try {
DataRow dataRow1 = new DataRow(queryDataSet1, new String[] { "Name", "Comment"});
dataRow1.setString("Name", userName);
dataRow1.setString("Comment", userComment);
queryDataSet1.addRow(dataRow1);
}
catch (DataSetException ex) {
ex.printStackTrace();
}
}
public void saveNewRow() {
try {
database1.saveChanges(queryDataSet1);
}
catch (DataSetException ex) {
ex.printStackTrace();
}
}
public static DataModule1 getDataModule(String wn) {
WerknemersNaam = wn;
if (myDM == null) {
myDM = new DataModule1();
}
return myDM;
}
public com.borland.dx.sql.dataset.Database getDatabase1() {
return database1;
}
public com.borland.dx.sql.dataset.QueryDataSet getQueryDataSet1() {
return queryDataSet1;
}
} |
Nu is mijn probleem het volgende:
De eerste keer dat ik naar een werknemer zoek gaat prima, maar op het moment dat ik voor de 2de keer een werknemer zoek dan geeft ie alleen de informatie van de eerste keer. Pas op het moment dat ik de server opnieuw start dan geeft ie andere waarde er in. Wat kan ik hier dus aan doen?