Datenbankanbindung in Java : Newbie-Frage

Status
Nicht offen für weitere Antworten.

major7

Mitglied
Hallo,

ich habe meine erste Datenbank in Java (embedded mckoi) erfolgreich angebunden, und möchte nun SQL-Queries darüber laufen lassen.
Bisher sieht das ganze so aus:

Klasse für die Verbindung:
Code:
import java.sql.*;

public class DbConnection {

	DbConnection(){
		try {
		      Class.forName("com.mckoi.JDBCDriver").newInstance();
		    }
		    catch (Exception e) {
		      System.out.println(
		        "Unable to register the JDBC Driver.\n" +
		        "Make sure the JDBC driver is in the\n" +
		        "classpath.\n");
		      System.exit(1);
	    }	
		String url = "jdbc:mckoi:local://G:/eclipse/workspace/quoteindex/mckoi/db.conf";
		String username = "admin_user";
	    String password = "aupass00";

	    Connection connection;
	    try {
	      connection = DriverManager.getConnection(url, username, password);
	      System.out.println("connection to database established");
	    }
	    catch (SQLException e) {
	      System.out.println(
	        "Unable to make a connection to the database.\n" +
	        "The reason: " + e.getMessage());
	      System.exit(1);
	      return;
	    }
	}
}

Klasse für die Abfrage:
Code:
import java.sql.*;

public class RandomQuote {
	String Quote;
	DbConnection DBC;
	RandomQuote(){
		
                        /* HIER WÜRDE ICH GERNE EIN ARRAY MIT ALLEN DATENSÄTZEN SCHREIBEN */
		

	}
	public String recite(){
		Quote = new String("Hallo");
		return Quote; 
	}
	
}

Kann mir jemand mal grundsätzlich die Javasyntax für eine SQL-Abfrage mit Anschliessender Ausgabe o.ä. aufschreiben? Ich komme aus dem MySQL/PHP-Bereich, da gehts so (zur Verdeutlichung, was ich meine):

Code:
$stmt="Select * from table";
$result=mysql_query($stmt);
while ($row=mysql_fetch_array($result)){
     echo $row["column"];
}

hab schon gesucht, aber kein tutorial gefunden...
 

major7

Mitglied
Hmmm. nach einigem schmökern habe ich wild probiert, und es klappt. Würde mich noch interessieren ob das halbwegs sauber gecoded ist...

So siehts nun aus :

Code:
import java.sql.*;

public class RandomQuote {
	String Quote;
	DbConnection DBC;
	Statement st;
	
	RandomQuote(){
		
		DBC = new DbConnection();
		st=DBC.makeSt();
		
		try{
			String stmt = "SELECT * FROM quotes";
			ResultSet result = st.executeQuery(stmt);
			while (result.next())
			{
				System.out.println(result.getString("quote"));
			}
		}
		catch(SQLException e){
			System.out.println(
	        "SQL Query erroneous.\n" +
	        "Error: " + e.getMessage());
		}
	}
	public String recite(){
		Quote = new String("Hallo");
		return Quote; 
	}
	
}

/***************************************************************************************/

import java.sql.*;

public class DbConnection {
	Statement stmt;
	Connection connection;
	
	DbConnection(){
		try {
		      Class.forName("com.mckoi.JDBCDriver").newInstance();
		    }
		    catch (Exception e) {
		      System.out.println(
		        "Unable to register the JDBC Driver.\n" +
		        "Make sure the JDBC driver is in the\n" +
		        "classpath.\n");
		      System.exit(1);
	    }	
		String url = "jdbc:mckoi:local://G:/eclipse/workspace/quoteindex/mckoi/db.conf";
		String username = "admin_user";
	    String password = "aupass00";

	    
	    try {
	      connection = DriverManager.getConnection(url, username, password);
	      System.out.println("connection to database established");
	    }
	    catch (SQLException e) {
	      System.out.println(
	        "Unable to make a connection to the database.\n" +
	        "The reason: " + e.getMessage());
	      System.exit(1);
	      return;
	    }
	}
	
	public Statement makeSt(){
		try{
			stmt = connection.createStatement();
			return stmt;
		}catch(SQLException e){
			 System.out.println(
			        "Unable to create a statement.\n" +
			        "The reason: " + e.getMessage());
		}
		return stmt;
	}
}

würde mich über sicherheitshinweise, tipps etc freuen.
 

abollm

Top Contributor
Ich habe mir deinen Code jetzt nicht im Detail angesehen. Vielleicht noch folgende Hinweise zum Thema "preparedStatement" vs. "executeQuery", die teilweise auch sicherheitsrelevant sind.

Vorteile von preparedStatement:

1. wenn du bestimmte SQL-Abfragen mehrmals hintereinander ausführen musst (z.B. in einer Schleife etc.), dann werden bzw. müssen die betr. Variablen nicht jedes Mal zur Laufzeit gebunden werden, also sind i.d.R. Performanz-Gewinne die Folge, sowie

2. ist es bei einem PreparedStatement wohl auch theoretisch so gut wie unmöglich, den an die DB gesendeten SQL-Code während der Laufzeit von außen zu manipulieren, da es sich bei ihnen ja um parametrisierte und zunächst deklarierte SQL-Anweisungen handelt, die vor dem eigentlichen Ausführen bereits vorkompiliert sind.

Es wird allerdings stets von einigen Zeitgenossen behauptet, dass für Einmal-Aufrufe der Statement-Aufruf schneller sei. Dagegen spricht aber wiederum die Erfahrung, dass bei üblichen SQL-Statements normale Statement-Abfragen sich _nicht_ oder nicht entscheidend performanter gegenüber den entsprechenden PreparedStatement-Abfragen verhalten.

Im übrigen hängt der Gebrauch von PreparedStatement auch immer von der realen RDBMS-Unterstützung ab. Da musst du dich halt vorher informieren.

Also zusammenfassend als einfache Merkregel:

Im Regelfalle - sofern möglich - besser gleich mit PreparedStatement arbeiten., sofern nicht bestimmte zwingende Gründe dagegen sprechen.
Für einfache und schnelle, ausschließliche Testzwecke ist ein Gebrauch von executeQuery dagegen häufig vorzuziehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
M Java Datenbankanbindung funktioniert nicht Datenbankprogrammierung 4
Z PostgreSQL Java Servlets mit Datenbankanbindung Datenbankprogrammierung 3
M vorschläge bzgl. java programm mit datenbankanbindung Datenbankprogrammierung 4
M Datenbankanbindung: Java - MySQL Datenbankprogrammierung 2
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
A Bestmögliche Entkopplung der Datenbankanbindung Datenbankprogrammierung 6
J Derby/JavaDB Datenbankanbindung Eclipse und Derby Datenbankprogrammierung 7
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
B Datenbankanbindung JSP Datenbankprogrammierung 7
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
C Datenbankanbindung mit einem JButton Datenbankprogrammierung 12
M Servlet in JSP anbinden // Datenbankanbindung in JSP Datenbankprogrammierung 8
S MySQL Datenbankanbindung extra Klasse Datenbankprogrammierung 10
C Pokergame + Datenbankanbindung (Wahrscheinlichkeiten) Datenbankprogrammierung 16
G Probleme mit Datenbankanbindung Datenbankprogrammierung 3
A Datenbankanbindung an mySQL und Ein-/Auslesen der Daten Datenbankprogrammierung 4
A Datenbankanbindung, Grundlagen Datenbankprogrammierung 2
D Datenbankanbindung unter Linux Datenbankprogrammierung 10
D DAtenbankanbindung im OO-Aufbau Datenbankprogrammierung 5
M Datenbankanbindung - Passwort schützen Datenbankprogrammierung 6
K Problem mit datenbankanbindung unter access 2003 Datenbankprogrammierung 3
C Datenbankanbindung ohne ODBC JDBC Brücke Datenbankprogrammierung 5
R Fehler in Datenbankanbindung Servlet -> Access Datenbankprogrammierung 5
P Datenbankanbindung (erstmal) zu Access Datenbankprogrammierung 3
S Datenbankanbindung + HTML + Applet Datenbankprogrammierung 7
H Datenbankanbindung MySQL per JDBC Datenbankprogrammierung 4
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3

Ähnliche Java Themen


Oben