Dodawanie użytkownika do bazy.

0

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

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

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.

1

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

0

Dałem coś takiego:

                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

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

0

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

                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:

                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(); 
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

1 użytkowników online, w tym zalogowanych: 0, gości: 1