Criar usuario no postgres

10 respostas
M
String usuario = "teste" ; 
String senha = "teste" ; 
executa = ( "CREATE USER ' " + usuario + " ' NOCREATEDB NOCREATEUSER ENCRYPTED ' " + senha + " ' "  ) ;

compila normal, mas dá erro ao executar "syntax error at or near ‘’‘teste’’’

alguem sabe o que eu posso fazer ???

10 Respostas

douglasrusso

inicialmente tente tirar o espaço em branco antes do usuario e antes da senha, pode ser que resolva.

String usuario = "teste" ; String senha = "teste" ; executa = ( "CREATE USER '" + usuario + "' NOCREATEDB NOCREATEUSER ENCRYPTED '" + senha + "' " ) ;

M

resto do codigo …

String executa = ( "CREATE USER '" +usuario+ "' NOCREATEDB NOCREATEUSER NOINHERIT ENCRYPTED PASSWORD '" +senha+ "' "  ) ;

     try {
      Class.forName("org.postgresql.Driver");
      Connection con = DriverManager.getConnection("jdbc:postgresql://10.1.1.14:5432/teste", usuario, senha );
      Statement stmt = con.createStatement();
      stmt.executeUpdate( executa );
      con.close();
      stmt.close();
     } catch (Exception ee) {
      ee.printStackTrace();
     }
ramilani12

Use classe PreparedStatement evite esses SQLInjection:

PreparedStatement pstmt = connectionDB.prepareStatement("  CREATE USER ? NOCREATEDB NOCREATEUSER ENCRYPTED ? ")

pstmt.setString(1 , usuario);
pstmt.setString(2 , senha);

pstmt.executeQuery();
M

existe outra maneira …

pois as variaveis usuario e senha vou digitar num jtextfield e mover para uma string

ramilani12

marcoscorso:
existe outra maneira …

pois as variaveis usuario e senha vou digitar num jtextfield e mover para uma string

Não entendi!?

Basta passar o usuario e senha para seu metodo …

M

ja consegui

obrigado

M

no postgres eu fiz assim:

CREATE USER “usuario” NOCREATEDB NOCREATEUSER ENCRYPTED PASSWORD ‘senha’

mas como ja falei “usuario” e ‘senha’ sao 2 string’s que vao ser digitadas num jtextfield e num jpasswordfield, …

M

quando a string usuario tem valor so de numero, tipo, “123” ele da erro (cai no “catch” com o erro em negrito abaixo), quando coloco “a1” ele cadastra normalmente, porque ???

Criei o usuario “123” pelo postgres ele criou normal, pelo java da erro

erro : Error: syntax error at or near “123”

try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection"jdbc:postgresql://10.1.1.14:5432/teste", vari_1, vari_2 );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
						
if ( resul.next() ) {
stmt.executeUpdate( "CREATE USER "+usuario+" NOCREATEDB NOCREATEUSER NOINHERIT ENCRYPTED PASSWORD '"+senha+"' " );
JOptionPane.showMessageDialog(null, "usuario cadastrado !","Operador",JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "CNPF Digitado não Encontrado !","Operador",JOptionPane.ERROR_MESSAGE);
return;
}
con.close();
stmt.close();
} catch (Exception ee) {
JOptionPane.showMessageDialog(null,"Erro !\n" + ee.getMessage() ,"Operador",JOptionPane.ERROR_MESSAGE);
}
M

no postgres, tive que fazer o seguinte para cadastrar o usuario com 123

CREATE USER "123" NOCREATEDB NOCREATEUSER NOINHERIT ENCRYPTED PASSWORD 'senha'

Como faco agora para colocar essas aspas duplas no java quando o valor de usuario for numerico ???

M

porque que quando crio um usuario desta maneira ele nao consegue fazer um select no postgres …

Criado 30 de janeiro de 2007
Ultima resposta 2 de fev. de 2007
Respostas 10
Participantes 3