# Rechte abfragen



## gast (21. Okt 2007)

Hallo,

wie kann ich über java abfragen ob ein benutzer schreib rechte auf eine tabelle meiner mssql datenbank hat?


----------



## Guest (21. Okt 2007)

Das ist Datenbankabhängig. Mit JDBC alleine kriegst du die Informationen nicht heraus bzw. nur, wenn du
die entsprechenden Systemtabellen abfragst.


----------



## Gast (21. Okt 2007)

und wie mache ich das bei mssql-server?

hab eine funktion hasperms im inet gefunden, aber die wird nicht erkannt. gibts ne andere möglichkeit?


----------



## Guest (21. Okt 2007)

OK, meine erste Antwort war Unsinn. Man kriegt es doch über die Metadaten der Verbindung heraus.
Lass mal das hier laufen
	
	
	
	





```
DatabaseMetaData dbmd = connection.getMetaData();
ResultSet rs = dbmd.getTablePrivileges("", "", "DEINE_TABELLE");
while(rs.next())
{
   System.out.println(String.format(
      "TABLE_CAT = %s\nTABLE_SCHEM = %s\nTABLE_NAME = %s\n"
     +"GRANTOR = %s\nGRANTEE = %s\nPRIVILEGE = %sIS_GRANTABLE = %s",
      rs.getString("TABLE_CAT"),
      rs.getString("TABLE_SCHEM"),
      rs.getString("TABLE_NAME"),
      rs.getString("GRANTOR"),
      rs.getString("GRANTEE"),
      rs.getString("PRIVILEGE"),
      rs.getString("IS_GRANTABLE")      
   ));
}
```


----------



## tuxedo (22. Okt 2007)

Anonymous hat gesagt.:
			
		

> OK, meine erste Antwort war Unsinn. Man kriegt es doch über die Metadaten der Verbindung heraus.



Sofern das im jeweiligen JDBC implementiert ist....

- Alex


----------



## Gast (23. Okt 2007)

also wenn ich das so mache bekommeich eine fehlermeldung "Datenbank-Komponente des Objektqualifizierers muss der Name der aktuellen Datenbank sein"

deshalb hab ich als erstes argument mal meine datenbank angegeben, aber dann bekomme ich garkeine ausgabe mehr. gibtr wohl kein resultset


----------



## Guest (23. Okt 2007)

Wie sieht dein Code aus? Kriegst du überhaupt eine Verbindung zum Server?
Ich kann mit der von dir genannten Fehlermeldung nichts anfangen.


----------



## Guest (27. Aug 2008)

Moin,

das gleiche Problem habe ich gerade mit meiner ersten Java-Anwendung, die auf einen MySQL-Server zugreifen soll. Ich möchte abhängig von den in der Datenbank hinterlegten Rechten z. B. Menüpunkte zum Öffnen von Tabellen-Ansichten sperren oder die Rückgabe von isEditable im TableModel beeinflussen. Problem: Wenn ich mit getTablePrivileges die Rechte einer existierenden Tabelle abfrage, erhalte ich immer ein leeres ResultSet (immerhin kein null und keine Exception). Nach meinen Recherchen im Web ist das kein ungewöhnliches Problem - nur habe ich bislang nirgends eine Lösung gesehen. Weiß jemand Rat?

Gruß
Stephan


----------



## Guest (3. Sep 2008)

Hallo?

hat noch niemand versucht die Berechtigung für den Schreibzugriff auf eine Tabelle VOR dem update zu zu erfragen? Geht das nur durch Abfangen von Exceptions NACH einem Schreibversuch?

Gruß
Stephan


----------

