# updateRow() schmeißt eine Exception, weil schreibgeschützt



## Wizard of OS (20. Mai 2006)

Hallo,

habe ein problem, an dem ich hier ein bisschen verzweifle.

http://java-forum.org/de/viewtopic.php?p=82860&sid=c8ac35a6ca384ad3023a889e4fb1e1bc

Das habe ich hier shcon gelesen, aber da gibt es keine lösung.
Bei ist ist der selbe fall, verwende Oracle 10g

und hier ist mein Code


```
try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		try {
			connection = DriverManager.getConnection(dbURL, dbUser, dbPassword);
		} catch (SQLException e) {
			e.printStackTrace();
		}

		ResultSet result = null;

		try {
			statement = connection.createStatement(
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_UPDATABLE);
			result = statement.executeQuery("select * from team");
			// System.out.println(result.getConcurrency());
			System.out.println(connection.getMetaData()
					.supportsResultSetConcurrency(result.getType(),
							result.getConcurrency()));
			result.first();

			// System.out.println(result.getInt(1) + result.getString("NAME")+
			// result.getString("TGROUP"));
			result.updateString("NAME", "Mumu");
			result.updateRow();
			result.close();
			statement.close();
			connection.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

}
```


Er liefert:


```
true
java.sql.SQLException: Ungültiger Vorgang bei schreibgeschützter Ergebnismenge: updateString
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
	at oracle.jdbc.driver.BaseResultSet.updateString(BaseResultSet.java:269)
	at oracle.jdbc.driver.OracleResultSet.updateString(OracleResultSet.java:2862)
	at dbs.test.Tester.main(Tester.java:50)
```

das update müsste gehen!

hat jemand eine idee,

ich wäre sehr dankbar!


----------



## emge (22. Mai 2006)

Wizard of OS hat gesagt.:
			
		

> ```
> result = statement.executeQuery("select * from team");
> ...
> result.updateString("NAME", "Mumu");
> ```



Versuch mal ein 

```
result = statement.executeQuery("select NAME from team");
			...
			result.updateString("NAME", "Mumu");
```

Grüße, Marco


----------



## Wizard of OS (23. Mai 2006)

Verdammt, das hat geklappt!

danke marco, aber wieso, wieso? hä?

was ist, wenn ich mehrere werte ändern will???


----------



## emge (23. Mai 2006)

Wizard of OS hat gesagt.:
			
		

> was ist, wenn ich mehrere werte ändern will???



Dann schreibst du halt mehrere Spalten in das select-Statement. 
	
	
	
	





```
select spalte1, spalte2 from tabelle
```
 select-Statements mit Wildcards sollte man im Übrigen schon aus Performance-Gründen nicht verwenden.

Grüße, Marco


----------



## Wizard of OS (24. Mai 2006)

danke, ich werde es mal testen!


----------



## lhein (24. Mai 2006)

Jau, und mal ganz davon abgesehen hat ein * in einem SELECT Statement schlicht und ergreifend nix verloren.
Das ist unsauber und unnötig in den allermeisten Fällen.

lr


----------



## Wizard of OS (25. Mai 2006)

select * from *; ist doch was feines :-D

danke leute!


----------

