Update auf Oracle Datenbank mit JDBC

fenerli23

Erfahrenes Mitglied
hi an alle,

habe soeben dieses Programm geschrieben um ein Update auf meiner Datenbank zu erstellen jedoch werden die Werte dier erstellt werden irgendwie nicht gespeichert ... müsste ich dazu noch etwas ergänzen:

Code:
package update;

import java.sql.*;

import oracle.jdbc.driver.*;
import oracle.sql.*;


class GetUpdate extends Object 
{
	public static void setGehalt(int manager_id, int salary)
	{
		try
		{
			DriverManager.registerDriver(new OracleDriver());
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "hr", "fenerium");
			String sqlUpdate = "UPDATE employees SET Salary = ? WHERE manager_id = ?";
			PreparedStatement pstmt = conn.prepareStatement(sqlUpdate);
			pstmt.setInt(1, salary);
			pstmt.setInt(2, manager_id);
			pstmt.executeUpdate();
			conn.close();
			pstmt.close();
		}
		catch (Exception e)  
		{
			e.printStackTrace();
		}
	}
	
	public static void main (String[] args)
	{
		setGehalt(7201, 100);
	}
}
 
Also bei mir klappt es so:
Java:
try
		{				
			DriverManager.registerDriver(new OracleDriver());
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
	        
	        Statement stmt = conn.createStatement();	        
	        String sql = "UPDATE EMPLOYEES SET FIRST_NAME='Tobias' WHERE EMPLOYEE_ID=100";
	        stmt.execute(sql);
	        
	        logger.info("UPDATE durchgeführt");
	        
	        sql = "SELECT * FROM EMPLOYEES ORDER BY EMPLOYEE_ID";
	        ResultSet rSet = stmt.executeQuery(sql);
	        
	        while (rSet.next())	        
	        	logger.info("EMPLOYEE_ID: " + rSet.getInt("EMPLOYEE_ID") + " - " + rSet.getString("FIRST_NAME"));	        
	        
	        rSet.close();
	        stmt.close();
	        conn.close();
		}
		catch(SQLException e)
		{
			logger.error("Konnte keine Verbindung herstellen.", e);
		}
 
bei mir klappt es jetzt auch hatte versehentlich manager_id und salary verwechselt.

bei deinem code wundert mich das:
Code:
logger.info(".....")
das kenne ich gar nicht muss dazu etwas importieren vorher?
 
Tut hier eigentlich nix zur Sache. Such mal nach Log4J, daher kommt das. Ersetzt letztendlich die System.out.println-Einträge. Somit kannst du später, wenn ein Programm "in Betrieb genommen wird" und ein Fehler auftritt, leichter debuggen, da du zB einfach nur den Writer änderst und die Konsolenausgaben auf eine Datei umleitest.
 
kannst du mal hier nachschauen was falsch ist wollte einen neuen Employee einfügen:

Code:
import java.sql.*;

import oracle.jdbc.driver.*;
import oracle.sql.*;

public class GetInsert 
{

	public static void main(String[] args)
	{
		
		try        
		{   
			DriverManager.registerDriver(new OracleDriver());            
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "fenerium");                        
			Statement stmt = conn.createStatement();   
			
			//Hinzufügen eines neuen Arbeitnehmer
			/*(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, " +
			"EMAIL, HIRE_DATE, JOB_ID, GEB_ID, DEPARTMENT_ID, SALARY)" +
			"PHONE_NUMBER, MANAGER_ID" + */
			String insertQuery = "INSERT INTO employees VALUES" +
					"(211, 'Hans','Wurstl', 'wurst', '01.10.2007', " +
					"'AC_SPEZ','29.08.1985', 80, 7500, '06131/21212', 101)";
			
			stmt.executeUpdate(insertQuery);
			System.out.println("INSERT durchgeführt");
			insertQuery = "SELECT * FROM EMPLOYEES ORDER BY EMPLOYEE_ID";
			ResultSet rSet = stmt.executeQuery(insertQuery);
			while (rSet.next())
				System.out.println("MANAGER_ID: " + rSet.getInt("MANAGER_ID") + " - " + rSet.getString("SALARY") + " - " +rSet.getString("LAST_NAME"));                                   
			rSet.close();            
			stmt.close();            
			conn.close();        
		}        
		catch(SQLException e)        
		{            
			System.err.println("error messgae: " + e.getMessage());
			e.printStackTrace();
			Runtime.getRuntime().exit(1);       
		} 
	}
}
 
Zuletzt bearbeitet:
Was genau wird denn für ein Fehler ausgegeben?
Ich finde eigenartig:
Employee ID = 211 -> Ist Employee ID nicht Primary Key und du musst den gar nicht setzen?
Email ist glaub ich unwichtig;)
JOB_ID: Muss das nicht eine Zahl sein?
 
diese geschieht:

Code:
error messgae: ORA-00917: Komma fehlt

java.sql.SQLException: ORA-00917: Komma fehlt

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
	at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)
	at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1615)
	at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1580)
	at insert.GetInsert.main(GetInsert.java:28)
 
Zurück