Aufg10 - oth

Werbung
Aufgabenblatt zur Vorlesung von Prof. Sauer
10. Aufgabenblatt
1. Aufgabe
Schreibe und implementiere eine Java-Anwendung mit der JDBC, die die Tabellen der OracleDatenbank „Personal“ benutzt und diese Tabelle in einem angemessenen Format auf dem
Textbildschirm ausgibt. Die Ausgabe der Tabelle soll über die SQL-Query eingegeben werden und auf
folgende Eingabe jeweils eine der Tabellen der Datenbank „Personal“ ausgeben:
SELECT * FROM ANGESTELLTE;
SELECT * FROM ABTEILUNG;
SELECT * FROM JOB;
Das folgende Bild zeigt den Ablauf der der Anwendung:
2. Aufgabe
Schreibe und implementiere eine Java-Anwendung mit der JDBC, die die Tabellen der OracleDatenbank „Personal“ benutzt und damit folgende Ausgabe in eine Textdatei erzeugt:
ANG_ID
A1
A10
A12
A13
A14
A2
A3
A4
A5
A6
A7
A8
A9
NAME
Fritz
Willi
Anton
Josef
Maria
Tom
Werner
Gerd
Emil
Uwe
Erna
Rita
Ute
GEBDATUM
02.01.50
07.07.56
05.07.48
02.08.52
17.11.64
02.03.51
23.01.48
03.11.55
02.03.60
03.04.52
17.11.55
02.12.57
08.09.62
BEZEICHNUNG
Organisation und Datenverarbeitung
Konstruktion
Organisation und Datenverarbeitung
Konstruktion
Personalabteilung
Konstruktion
Organisation und Datenverarbeitung
Vertrieb
Personalabteilung
Rechenzentrum
Konstruktion
Konstruktion
Organisation und Datenverarbeitung
TITEL
Systemplaner
Ingenieur
Systemplaner
Systemplaner
Kaufm. Angestellter
Ingenieur
Programmierer
Kaufm. Angestellter
Programmierer
Operateur
Techn. Angestellter
Techn. Angestellter
Systemplaner
3. Aufgabe
Schreibe und implementiere eine JDBC-Anwendung mit folgender Funktionalität:
1
Aufgabenblatt zur Vorlesung von Prof. Sauer
- Löschen aus der Tabelle „angestellte“ der Datenbank „Personal“ die Datensätze (Tupel) mit der
ANG_ID = „A12“ und mit der ANG_ID = „A14“
- Einfügen der soeben gelöschten Datensätze in die Tabelle.
4. Aufgabe
Schreibe und implementiere eine Java-Anwendung, die ein Java-Applet umfasst, das folgendes
Fenster erzeugt:
Nach dem Drücken der Schaltfläche „HelloJDBC“ soll in das Listenfeld eine Information ausgegeben
werden, die anzeigt, ob die Verbindung zur Datenbank erfolgreich war, z.B.:
2
Aufgabenblatt zur Vorlesung von Prof. Sauer
Lösungen
1. Aufgabe
import java.io.*;
import java.sql.*;
class Personal
{
public static void main (String args[])
throws SQLException, ClassNotFoundException, IOException
{
// Class.forName("oracle.jdbc.driver.OracleDriver");
//Oracle-Treiber laden
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ());
System.out.println("Bitte gib Informationen zur DB-Verbindung ein.");
// String user = readEntry("User: ");
// String passwort = readEntry("Passwort: ");
// String db = readEntry("DB: ");
String query = readEntry("SQL-Query: ");
String user
= "saj39122";
String passwort = "saj39122";
System.out.println("Connecting..."); //auf die Datenbank connecten
Connection conn = DriverManager.getConnection
// ("jdbc:oracle:thin:@rfhpc8003:1521:ora815","scott","tiger");
// ("jdbc:oracle:@ora815","scott","tiger");
("jdbc:odbc:ora815","saj39122","saj39122");
System.out.println("Connected\n");
// Create a statement
Statement stmt = conn.createStatement ();
// Execute the query
System.out.println("Executing query " + query + "\n");
ResultSet
rset = stmt.executeQuery(query);
ResultSetMetaData rmd = rset.getMetaData();
int anz_spalten
= rmd.getColumnCount();
int anz_zeichen
= 0;
for (int i = 1; i <= anz_spalten; i++)
{
System.out.print(rmd.getColumnName(i) + "\t");
anz_zeichen += rmd.getColumnName(i).length();
}
System.out.println();
for (int j = 1; j <= anz_zeichen; j++)
System.out.print("-");
System.out.println("----------------");
while (rset.next() )
{
for (int i = 1; i <= anz_spalten; i++)
{
String wort = rset.getString(i);
if (rmd.getColumnTypeName(i).equals("DATE")) wort = wort.substring(0,10);
System.out.print(wort + "\t");
}
System.out.println();
}
}
static String readEntry(String prompt)
{
try {
StringBuffer puffer = new StringBuffer();
System.out.println(prompt);
System.out.flush();
int c = System.in.read();
while (c != '\n' && c != -1)
{
puffer.append((char)c);
c = System.in.read ();
}
return puffer.toString();
}
catch (IOException e)
{
return "";
3
Aufgabenblatt zur Vorlesung von Prof. Sauer
}
}
}
2. Aufgabe
import java.sql.*;
import java.io.*;
public class AngJobAbt
{
public static void main(String[] args)
throws SQLException, ClassNotFoundException, IOException
{
// Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ());
System.out.println("Bitte gib Informationen zur DB-Verbindung ein.");
String user = readEntry("User: ");
String passwort = readEntry("Passwort: ");
String db = readEntry("DB: "); System.out.println(db);
System.out.println("Connecting...");
Connection conn = DriverManager.getConnection (
/*
"jdbc:oracle:thin:" +user +"/"+ passwort
+"@rfhs8012.fh-regensburg.de:1521:ora8i"
*/
//
"jdbc:odbc:" + db, user, passwort
"jdbc:odbc:ora815","saj39122","saj39122"
);
System.out.println("Connected\n");
// Create a statement
Statement stmt = conn.createStatement ();
// Textdatei vorbereiten (zur Ausgabe)
PrintWriter f = new PrintWriter(
new BufferedWriter(
new FileWriter("angjobabt.txt")),true);
// Execute the query
ResultSet rs = stmt.executeQuery (
"select ang_id, name, to_char(gebdatum,'dd.mm.yy') GebDatum, bezeichnung, titel"
+ " from angestellte, abteilung, job"
+ " where angestellte.abt_id = abteilung.abt_id and angestellte.job_id = job.job_id"
+ " order by ang_id");
ResultSetMetaData rmd= rs.getMetaData();
int anzspalten=rmd.getColumnCount();
for(int i = 1; i <= anzspalten; i++)
{
System.out.print(rmd.getColumnName(i));
f.print(rmd.getColumnName(i));
if (rmd.getColumnDisplaySize(i) < rmd.getColumnName(i).length())
{ f.print(" "); }
else {
for (int j = 1; j <= (rmd.getColumnDisplaySize(i)-rmd.getColumnName(i).length()); j++)
{
System.out.print(" "); f.print(" ");
}
System.out.print(" "); f.print(" ");
}
}
System.out.println();
f.println();
while(rs.next())
{
for ( int i = 1; i <= anzspalten; i++)
{
String wort = rs.getString(i);
System.out.print(wort); f.print(wort);
if (rmd.getColumnDisplaySize(i) < rmd.getColumnName(i).length())
{ for (int j = 1; j <= (rmd.getColumnName(i).length() - wort.length() + 1); j++)
{ f.print(" "); }
}
else {
for (int j = 1; j <= (rmd.getColumnDisplaySize(i) - wort.length()); j++)
{
System.out.print(" "); f.print(" ");
4
Aufgabenblatt zur Vorlesung von Prof. Sauer
}
System.out.print(" "); f.print(" ");
}
// System.out.print(rmd.getColumnDisplaySize(i));
}
System.out.println(); f.println();
}
}
static String readEntry( String prompt)
{
try { StringBuffer puffer = new StringBuffer();
System.out.print(prompt);
System.out.flush();
int c= System.in.read();
while ( c!='\n' && c != -1)
{ puffer.append((char) c);
c=System.in.read();
}
return puffer.toString();
}
catch (IOException e) { return ""; }
}
}
3. Aufgabe
/*
* This sample shows how to insert data in a table.
*/
// You need to import the java.sql package to use JDBC
import java.sql.*;
class InsertBsp
{
public static void main (String args [])
throws SQLException
{
// Load the Oracle JDBC driver
// DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception e)
{
System.out.println ("Fehler: " + e.getMessage () + "\n");
}
// Connect to the database
// You can put a database name after the @ sign in the connection URL.
Connection conn =
DriverManager.getConnection
// ("jdbc:oracle:oci8:@", "scott", "tiger");
("jdbc:odbc:ora815","saj39122","saj39122");
// Prepare a statement to cleanup the emp table
Statement stmt = conn.createStatement ();
try
{
stmt.execute ("delete from ANGESTELLTE where ANG_ID = 'A14'");
}
catch (SQLException e)
{
// Ignore an error here
}
try
{
stmt.execute ("delete from ANGESTELLTE where ANG_ID = 'A12'");
}
catch (SQLException e)
{
// Ignore an error here too
}
// Close the statement
5
Aufgabenblatt zur Vorlesung von Prof. Sauer
stmt.close();
// Prepare to insert new names in the EMP table
PreparedStatement pstmt = conn.prepareStatement(
"insert into ANGESTELLTE (ANG_ID, NAME, GEBDATUM, ABT_ID, JOB_ID) values (?, ?, ?, ?,
?)");
// Add Maria as ang_id A14
pstmt.setString (1, "A14");
pstmt.setString (2, "Maria");
Date datum = new Date(64,11,17);
pstmt.setDate(3, datum);
pstmt.setString(4,"PA");
pstmt.setString(5,"KA");
// Do the insertion
pstmt.execute ();
// The first ? is for ANG_ID
// The second ? is for NAME
// The third ? is for GEBDATUM
// The 4th
// The 5th
? is for ABT_ID
? is for JOB_ID
// Add Anton as ang_id A12
pstmt.setString (1, "A14");
// The first ? is for ANG_ID
pstmt.setString (2, "Anton");
// The second ? is for NAME
Date datum2 = new Date(48,07,05); // The third ? is for GEBDATUM
pstmt.setDate(3, datum2);
pstmt.setString(4,"OD");
pstmt.setString(5,"SY");
// Do the insertion
pstmt.execute ();
// Close the statement
pstmt.close();
// Close the connecion
conn.close();
}
}
4. Aufgabe
/*
* This sample applet just selects 'Hello World' and the date from the database
*/
// Import the JDBC classes
import java.sql.*;
// Import the java classes used in applets
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class HalloJdbcAnw extends java.applet.Applet
{
// The driver to load
static final String driver_class = "sun.jdbc.odbc.driver.JdbcOdbcDriver";
// The connect string
/* static final String connect_string =
"jdbc:oracle:thin:saj39122/[email protected]:1521:ora8i";
*/
// This is the kind of string you woudl use if going through the
// Oracle 8 connection manager which lets you run the database on a
// different host than the Web Server. See the on-line documentation
// for more information.
// The query we will execute
static final String query = "select 'Hallo JDBC: ' || sysdate from dual";
// The button to push for executing the query
Button execute_button;
// The place where to dump the query result
TextArea output;
// The connection to the database
Connection conn;
// Create the User Interface
public void init ()
6
Aufgabenblatt zur Vorlesung von Prof. Sauer
{
this.setLayout (new BorderLayout ());
Panel p = new Panel ();
p.setLayout (new FlowLayout (FlowLayout.LEFT));
execute_button = new Button ("Hello JDBC");
p.add (execute_button);
this.add ("North", p);
output = new TextArea (10, 60);
this.add ("Center", output);
}
// Do the work
public boolean action (Event ev, Object arg)
{
if (ev.target == execute_button)
{
try
{
// Clear the output area
// Diese setText Anweisung initialisiert TextArea mit leerem String!
//output.setText ("");
// See if we need to open the connection to the database
if (conn == null)
{
// Load the JDBC driver
output.append ("Loading JDBC driver " + driver_class + "\n");
// Class.forName (driver_class);
// Connect to the databse
// output.append ("Registering...\n");
// DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ());
try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception e)
{
System.out.println ("Fehler: " + e.getMessage () + "\n");
}
// Connect to the database
// You can put a database name after the @ sign in the connection URL.
output.append ("Connecting to "/* + connect_string */ + "\n");
conn =
DriverManager.getConnection
// ("jdbc:oracle:oci8:@ora815", "scott", "tiger");
("jdbc:odbc:ora815","scott","tiger");
// conn = DriverManager.getConnection (connect_string);
output.append ("Connected\n");
}
// Create a statement
Statement stmt = conn.createStatement ();
// Execute the query
output.append ("Executing query " + query + "\n");
ResultSet rset = stmt.executeQuery (query);
// Dump the result
while (rset.next ())
output.append (rset.getString (1) + "\n");
// We're done
output.append ("done.\n");
}
catch (Exception e)
{
output.append ("Fehler: " + e.getMessage () + "\n");
}
return true;
}
else
return false;
}
public static void main(String args[])
{
Frame meinFenster = new Frame();
HalloJdbcAnw halloJdbc = new HalloJdbcAnw();
meinFenster.addWindowListener(new WindowAdapter()
{
7
Aufgabenblatt zur Vorlesung von Prof. Sauer
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
meinFenster.add("Center",halloJdbc);
halloJdbc.init();
halloJdbc.start();
meinFenster.setSize(500,200);
meinFenster.setVisible(true);
}
}
8
Herunterladen