Olá. Tenho os seguintes atributos na minha classe:
static String URL="jdbc:jtds:sqlserver://blablabla; databaseName=Pxx";
static String usuario;
static String password ;
static String DRIVER="net.sourceforge.jtds.jdbc.Driver";
Gostaria de passar parâmetros para o atributo usuário e senha através de uma tela com 2 inputs:
<label> Usuário: <h:inputText value ="#{sql_controle.parans.usuario}"/></label>
<label> Password: <h:inputText value ="#{sql_controle.parans.password}"/></label>
<br></br><br></br>
<p:commandButton value="CRIAR CONEXÂO" class ="btnSalvar"
action="#{sql_controle.createParam()}" onclick="#"/>
Só que elas não estão recebendo os parâmetros qualquer atributo de outra classe que utilizo esse procedimento não sendo static funciona. Gostaria de saber como fazer isso em atributos do tipo static.
Olá,
Primeiro, deveria informar em mais detalhes seu ambiente.
Segundo, apesar disso, observa-se que está utilizando JSF + Primefaces.
Existem várias formas de se passar parâmetros em JSF.
Sugiro uma apostila de JSF, por exemplo: http://www.k19.com.br/downloads/apostilas/java/k19-k12-desenvolvimento-web-com-jsf2-e-jpa2
Ou também: https://www.caelum.com.br/apostila-java-web/
Amigo, vi seu post no stackOverflow…
O JSF utiliza os getters e setters do Controller para transferir as informações da View para o Controller.
Não utilizamos getters e setters em membros staticos (talvez getters… hehe)
Dessa forma, você deve criar algum método público que passe as informações para seus membros staticos.
Algo tipo assim:
public void passaValorUsuario(String usuario) {
SuaClasse.usuario = usuario;
}
Acho que assim funciona 
Tente aí e diz se funcionou.
tentei mas continua com o mesmo erro vou abaixo tem minha classe completa
static String URL = “jdbc:jtds:sqlserver://srvwin2012:xxxx; databaseName=PMonitor”;
static String usuario;
static String password;
static String DRIVER = “net.sourceforge.jtds.jdbc.Driver”;
private static Connection conexao_SQL = null;
public void passaValorUsuario() {
SQL_ServerConnerction.usuario = "sa";
SQL_ServerConnerction.password = "zbr@123";
}
public static Connection abreConexao() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
if (conexao_SQL == null) {
System.out.println("Servidor inicializado");
try {
Class.forName(DRIVER);
System.out.println("Conectando ao banco SQL_SERVER");
conexao_SQL = DriverManager.getConnection(URL, usuario, password);
return conexao_SQL;
} catch (ClassNotFoundException e) {
System.out.println("deu erro pq" + e + "\n\n");
throw new SQLException(e.getMessage());
}
} else {
return conexao_SQL;
}
}
me retorna o seguinte erro:
Exception in thread “main” java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:654)
at net.sourceforge.jtds.jdbc.JtdsConnection.(JtdsConnection.java:371)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at db.connections.SQL_ServerConnerction.abreConexao(SQL_ServerConnerction.java:47)
at sc.classes.SQL_ServerDAO.coletarDados(SQL_ServerDAO.java:38)
at sc.classes.SQL_ServerDAO.main(SQL_ServerDAO.java:344)
Caused by: java.io.IOException: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.
at net.sourceforge.jtds.jdbc.TdsCore.sendMSLoginPkt(TdsCore.java:1963)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:617)
… 7 more
Java Result: 1
isso da porque os atributos static não estão recebendo o valor
deu certo muito obrigado estava esquecendo de chamar o método que passo os valores na hora de executar
tenho outra duvida nessa mesma questão, porque ali esta em um método void se eu executo por uma classe main tudo ok, só que eu preciso executar esse método void dentro do abreConexão() na tela principal da minha aplicação web após efetuar o login ela exibe uma dashboard com dados do banco dessa conexão, só que da o mesmo erro citado acima porque os atributos não receber o valor de usuário e password porque o método void não é executado, como executo ele neste contexto ?
Por que você não faz assim?
public static Connection abreConexao() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
SQL_ServerConnerction.usuario = "sa";
SQL_ServerConnerction.password = "zbr@123";
if (conexao_SQL == null) {
System.out.println("Servidor inicializado");
try {
Class.forName(DRIVER);
System.out.println("Conectando ao banco SQL_SERVER");
conexao_SQL = DriverManager.getConnection(URL, usuario, password);
return conexao_SQL;
} catch (ClassNotFoundException e) {
System.out.println("deu erro pq" + e + "\n\n");
throw new SQLException(e.getMessage());
}
} else {
return conexao_SQL;
}
}
O usuário e senha de login é o mesmo usuário e senha do banco?
então os valores de usuario e password eu carrego de um banco de dados por um método do meu controle
controle.selectedUsuario().toString().replace("[","").replace("]","");
esse trecho acima por exemplo me traz o valor nome do usuário que esta salvo no meu banco, só que da um erro por não ser static
consegui passei o método por onClick no meu botão vlw pela ajuda