Dodawanie użytkownika do bazy.

Dodawanie użytkownika do bazy.
O1
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Chcę dodać w swoim programie użytkownika do bazy. Jednak mam problem. Oto mój kod:

Kopiuj
String sql0 = "create user ? identified by ? default tablespace users temporary tablespace temp quota unlimited on users";
                sta = bd.con.prepareStatement(sql0);
                sta.setString(1, jTextField6.getText());
                sta.setString(2, jPasswordField1.getText());
                sta.executeUpdate(); 

Nie chce się wykonać. W polu jTextField6 mam login a w jPasswordField1 hasło. Przy próbie wykonania wyskakuje błąd ORA-01935 missing user or role name.

Co robię źle? Dodam, że jeśli zamienię sql0 na

Kopiuj
String sql0 = "create user Jim identified by Pass default tablespace users temporary tablespace temp quota unlimited on users";

Czyli zamiast pytajników dam domyślne wartości wszystko przebiega poprawnie i użytkownik zostaje dodany do bazy.

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 426
1

weź sobie wypisz stworzony sta przed executeUpdate (sta.toString()) i sprawdz czy jest poprawnie stworzony - moze jakiegos NULLa probujesz utworzyc jako użytkownika

O1
  • Rejestracja: dni
  • Ostatnio: dni
0

Dałem coś takiego:

Kopiuj
                String sql0 = "create user ? identified by ? default tablespace users temporary tablespace temp quota unlimited on users";
                sta = bd.con.prepareStatement(sql0);
                sta.setString(1, jTextField6.getText());
                sta.setString(2, jPasswordField1.getText());
                JOptionPane.showMessageDialog(null, sta.toString());
                sta.executeUpdate(); 

Ale to mi nie wyświetla nic sensownego tylko oracle.jdbc.driverOraclePreparedStaetmentWrapper@6012b597

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 426
1

hm na postgresie ta metoda wyrzuca caly stworzony SQL. to weź moze wyswietl teksty z field6 i field1

a najlepiej dodaj

sta.setString(1, "tekst ktory chcialbys by byl w field6");
sta.setString(2, "tekst ktory chcialbys by byl w field1");

i sprobuj czy pojdzie :) przy okazji wyswietl tez co jest w field6 i field1

O1
  • Rejestracja: dni
  • Ostatnio: dni
0

Sprawdzałem już to sobie wcześniej nic nie jest puste:

Kopiuj
                String sql0 = "create user ? identified by ? default tablespace users temporary tablespace temp quota unlimited on users";
                sta = bd.con.prepareStatement(sql0);
                sta.setString(1, jTextField6.getText());
                sta.setString(2, jPasswordField1.getText());
                JOptionPane.showMessageDialog(null, jTextField6.getText());
                JOptionPane.showMessageDialog(null, jPasswordField1.getText());
                sta.executeUpdate();

MessageDialog wyświetla mi to co wpisałem w tych polach.

Zaś ustawienie w setach domyślnie, wywala to samo jak były tam fieldy:

Kopiuj
                String sql0 = "create user ? identified by ? default tablespace users temporary tablespace temp quota unlimited on users";
                sta = bd.con.prepareStatement(sql0);
                sta.setString(1, "Adam");
                sta.setString(2, "Pass");
                JOptionPane.showMessageDialog(null, jTextField6.getText());
                JOptionPane.showMessageDialog(null, jPasswordField1.getText());
                sta.executeUpdate(); 
SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 426
1

wrzuc do setString na stale Stringi ktore chcesz by tam byly, jesli pojdzie to pewnie chodzi o metode setString - umieszcza wartosci w ' ' (przynajmniej w postgresie) a tu wydaje sie ze maja byc bez ' '

edit:

no nic to sobie zrob nornalny Statement łącząc Stringi "create user " + user + " identified by " +password+ " default tablespace users temporary tablespace temp quota unlimited on users"

wydaje się ze coś kiepsko setString w tym wypadku dziala bo pewnie wsadza tekst pomiędzy ' ' a z przykladu ktory podales wynikalo ze ich tam nie ma

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.