MySQL User Eingaben in die DB einfügen

M

MelaniK_55

Gast
Hallo,
Ich habe folgendes Programmm geschrieben:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 

 
/**
 * @author Thomas.Darimont
 * 
 */
public class JDBCAutoGenerateKeysExample {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			
			Class.forName ("com.mysql.jdbc.Driver").newInstance();
			Connection con = DriverManager.getConnection(
					"jdbc:mysql://localhost/java", "root","" );
			//con.setReadOnly(true);
			Statement smt = con.createStatement();
			
	              //  Statement.CLOSE_ALL_RESULTS, Statement.RETURN_GENERATED_KEYS);
			
			
			smt.execute("insert into javatest  values (999999, 'dddd','javatest','javatest','javatest','20.08.2010')");
			
			
			 ResultSet generatedKeys = smt.getGeneratedKeys();
		        if(generatedKeys.next()){
		            System.out.println(generatedKeys.getString(1)+ "  " + generatedKeys.getString(2)+ "  " + generatedKeys.getString(3)
		            		+ "  " + generatedKeys.getString(4)+ "  " + generatedKeys.getString(5)+ "  " + generatedKeys.getDate(6));    
		        }
		       // rs.close();
				smt.close();
				con.close();
		}catch (Exception e){
			System.out.println("+++++++ Fehler --> " +e);
		
		
		}
		}}

Im dem jetzigen Programm sind die Daten fest kodiert.

Ich würde gerne das Programm so haben, dass beliebdig viele Daten von der Tastatur gelesen werden und in die DB eingefügt werden.

Danke für eure Hilfe
 

jstei001

Aktives Mitglied
Das musst du mit einem Callable Statement machen:

Java:
CallableStatement cstmt = con.prepareCall("insert into javatest  values (?,?,?,?,?,?)");

cstmt.SetInt(1,999999);
cstmt.SetString(2,"bbbb");

//oder dann halt
int varibale = einlesen von konsole....
cstmt.SetInt(1,Variable);


cstmt.execute();

usw.

die Set methoden überschreiben jedes ? mit dem wert 1 und 2 bedeuten erstes und zweites Fragezeichen.
 
M

MelaniK_55

Gast
vielen Dank.
also Anfängerin habe ich soweit geschafft scheint auch zu funktionieren:
Java:
import java.sql.*;
import java.util.Scanner;
public class EinfuegenInDB {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int zahl;
		String str1, str2, str3, str4, str5;
		Date datum;
		
try {
			
			Class.forName ("com.mysql.jdbc.Driver").newInstance();
			Connection con = DriverManager.getConnection(
					"jdbc:mysql://localhost/javatest", "root","" );
			//con.setReadOnly(true);
			CallableStatement cstmt = con.prepareCall("insert into javatest  values (?,?,?,?,?,?)");
			
	              //  Statement.CLOSE_ALL_RESULTS, Statement.RETURN_GENERATED_KEYS);
			
			
			//cstmt.execute("insert into javatest  values (999999, 'bubu','javatest','javatest','javatest','20.02.2010')");
			
			Scanner sc=new Scanner(System.in);
			
			
			 System.out.println( "String eingeben  " );
			zahl= sc.nextInt();
			cstmt.setInt(1, zahl);
			
			 System.out.println( "String 1 eingeben  " );
				str1= sc.next();
				cstmt.setString(2, str1);
				
				
				System.out.println( "String 2 eingeben  " );
					str2= sc.next();
					cstmt.setString(3, str2);
				
				
				
				System.out.println( "String 3 eingeben  " );
					str3= sc.next();
					cstmt.setString(4, str3);
					
				System.out.println( "String 4 eingeben  " );
				str4= sc.next();
				cstmt.setString(5, str4);
				
				
				System.out.println( "datum eingeben  " );
				str5= sc.next();
				
				cstmt.setString(6, str5);
			cstmt.execute();
			
			
			
			ResultSet rs = cstmt.executeQuery("Select *from javatest");
			
			System.out.println("-----------DB-Daten------------");
        	System.out.println("ID\t"+"Name\t" +"Nachname\t" +"Adresse\t");
			while(rs.next()){
				
				
		System.out.println(rs.getString(1)+" " +rs.getString(2) +" "+ rs.getString(3)+" "+ rs.getString(4)+" "+rs.getString(5)+" " +rs.getDate(6));
			
			}
			
			
			
		
		       // rs.close();
				cstmt.close();
				con.close();
		}catch (Exception e){
			System.out.println("+++++++ Fehler --> " +e);
		
		
		}
	}
}

Gibts vorschläge, wie ich besser oder anders auch machen könnte?

Danke
 

Fab1

Top Contributor
Java:
Gibt es Vorschläge, wie ich besser oder anders auch machen könnte?

Nunja zuerst könnte man die Variablennamen besser benennen :)

Aber letztendlich läuft hier alles komplett Konsolen basiert und die Frage dabei ist relativ leicht, willst du das?

Außerdem steht momentan alles in der main - Methode was natürlich nicht gerade der Übersichtlichkeit dient. Bei solchen kleinen Programmen macht das zwar nicht viel aus, da man gleich sieht um was es geht, aber später oder mit der Zunahme von Funktionen und somit Code könnte man sicherlich durch Methoden etwas an Übersichtlichkeit gewinnen.
 
M

Melani_55

Gast
Vielen Dank für den Tipp.
Variabelnamen und die Auslagerung von Code werde ich dan berücksichtigen.

Ich wollte schrittweise alles aufbauen sprich ein -und ausgabe aus DB. Nun wollte zum nächsten Punkt kommen und zwar die Daten aus DB in einem Fenster ausgeben und auch über ein GUI die Daten eingeben. Bin nur soweit gekommen:
Java:
import javax.swing.JFrame;
import javax.swing.JLabel;


public class UnserFrame extends JFrame {
	JLabel text;
	
	public UnserFrame (){
		setVisible(true);
		setSize(500, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setTitle("Unser Frame");
		setResizable(false);
		setLayout(null);
		
		text = new JLabel("Hallo");
		text.setBounds(0, 0, 500, 10);
		
		add(text);
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	JFrame jf = new UnserFrame();
	}

}
 

mla.rue

Bekanntes Mitglied
Was genau ist der Vorteil von so einem CallableStatement (javadoc gelesen, nur erschließt sich mir da so der Vorteil nicht wirklich). Ich kann doch genausogut die Sql Anweisung erst nach der Konsoleneingabe der Werte zusammenstellen und dann executeUpdate ausführen?
 

turtle

Top Contributor
Es gibt ZWEI Interfaces die hier von Belang sind

  • PreparedStatement (PS)
    enthalten ein prekompiliertes SQL-Statement das mit verschiedenen Parametern "versorgt" werden kann. Dieses ist das bei Weitem das am häufigsten Nutzung.
  • CallableStatement zur Ausführung von SQL stored procedures.

PS werden daher so häufig eingesetzt, weil damit keine SQL-Injection Angriffe möglich sind, die Performance steigt, weil die DB nicht immer das SQL parsen muss und der Code lesbarer wird, weil keine String-Pfriemelei für die Parameter notwendig ist.
Ich nutze praktisch nie CallableStatements, weil Java plattformunabhängig, stored procedure aber sehr DB-spezifisch sind.

Aber die Nutzung von PS empfehle ich sehr dringend!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D Multi User Datenbank Anwendung Datenbankprogrammierung 5
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
D HSQLDB user lacks privilege or object not found Datenbankprogrammierung 6
J Datenbank: Methode wegen doppelten User Datenbankprogrammierung 1
M User lacks privilege or object not found Datenbankprogrammierung 3
S UPDATE user Datenbankprogrammierung 4
P Mittels Java einen neuen MySQL User erstellen Datenbankprogrammierung 4
D MySQL User mit nur mit lokalen Lesezugriff und ohne Phpmyadmin Datenbankprogrammierung 4
F JPA und Klasse "User" Datenbankprogrammierung 3
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
G JDBC-Verbindung: User wechseln Datenbankprogrammierung 2
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
T Theoriefrage : mehrere User vs gleichen Datensatz Datenbankprogrammierung 4
1 User die Rechte eines Datenbankerstellers zuweisen? Datenbankprogrammierung 3
G iBatis Datenbankverbindung - DB-User übergeben Datenbankprogrammierung 4
minzel Access denied for user . Datenbankprogrammierung 10
Meldanor Eingaben auf SQL Befehle überprüfen Datenbankprogrammierung 13
Kirby.exe Auto Increment und nachträgliches einfügen Datenbankprogrammierung 5
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
C String in Datenbank einfügen Datenbankprogrammierung 11
V Datenbankwerte in Array einfügen Datenbankprogrammierung 1
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
L H2 100000 Entries in Datenbank einfügen Datenbankprogrammierung 10
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
P Java Timestamp in Datenbank einfügen Datenbankprogrammierung 5
Helgon H2 byte[] in BINARY einfügen Datenbankprogrammierung 4
S MySQL Einfügen in Tabelle nur von Programm zulassen Datenbankprogrammierung 7
H Oracle In Datenbank Einfügen Datenbankprogrammierung 20
L Hibernat will Daten nicht einfügen??? Datenbankprogrammierung 2
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
J In viele verschiedene Datenbanken einfügen Datenbankprogrammierung 3
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
Eldorado MySQL Hibernate - neuen Datensatz einfügen Datenbankprogrammierung 2
C Variable in MySQL einfügen Datenbankprogrammierung 2
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
M Keine doppelten Datensätze einfügen Datenbankprogrammierung 24
M SQL Abfrage in jTable einfügen Datenbankprogrammierung 8
S Bilder in Oracledatenbank einfügen Datenbankprogrammierung 5
G Problem beim einfügen in der Datenbank Datenbankprogrammierung 4
K Daten in Datenbanken einfügen Datenbankprogrammierung 6
E [SQL, Oracle] Zeile einfügen Datenbankprogrammierung 8
M JDBC: Viele Datensätze in Tabelle einfügen: Wie? Datenbankprogrammierung 7
T Tabelle in datenbank einfügen Datenbankprogrammierung 2
D Tabelle eine Zeile einfügen. Datenbankprogrammierung 3
A Blob in Oracle-DB einfügen (veraltete Methode) Datenbankprogrammierung 3
thE_29 Tool zum Einfügen in Oracle DB Datenbankprogrammierung 16
C Datensatz einfügen und quittierung Datenbankprogrammierung 31
N Datenbank in diese Klasse einfügen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben