Boa tarde, estou precisando fazer uma conexão em uma base de dados SQL Server, de um sistema que utilizamos na empresa, mas não estou conseguindo. Estou fazendo o seguinte:
public void concectaProsoft() {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:jtds:sqlserver://srvfinanceiro/SQLEXPRESS:1433;Conemp;user=***;password=***");
System.out.println("Conexão com o Banco estabelecida com sucesso");
} catch (SQLException ex) {
ex.printStackTrace();
System.out.println("Falha ao Conectar ao Banco");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Falha ao Conectar ao Banco");
}
}
mas quando eu executo o metodo obtenho o seguinte erro:
run:
java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:410)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at dao.daoProsoft.concectaProsoft(daoProsoft.java:17)
at wpdtoprosoft.Main.main(Main.java:10)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Falha ao Conectar ao Banco Prosoft
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:307)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:257)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:311)
... 6 more
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
Estou usando o driver jtds-1.2.5, alguem tem ideia do que fazer?
E o servidor está rodando mesmo?
Usuário e senhas estão corretos?
Sua máquina tem acesso liberado pra essa máquina (pra testar isso faça um ping srvfinanceiro, e um telnet srvfinanceiro 1433)?
Voce consegue se logar usando o Query Analyzer e tudo mais ?
Opa marcelo, o erro era a porta que está configurada pra 1041, alterei mas estou tendo outro erro que me parece ser de altenticação, será que é isso mesmo? Segue o erro:
run:
java.sql.SQLException: Não é possível abrir o banco de dados "SQLEXPRESS" solicitado pelo logon. Falha de logon.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
Falha ao Conectar ao Banco Prosoft
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:345)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at dao.daoProsoft.concectaProsoft(daoProsoft.java:17)
at wpdtoprosoft.Main.main(Main.java:10)
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Sim, ele existe, esta em produção com um sistema rodando neste momento. Eu fiz uma conexao pelo Management Studio Express, com o nome de usuario e senha que tenho e ele logou sem problemas. Consigo ler as tabelas e dados no banco.
Estou com outro problema, não consigo ler as tabelas, criei o seguinte metodo:
public void pesquisaTodosClientes() throws SQLException {
PreparedStatement stmt = this.conn.prepareStatement("select * from CadClientes");
stmt.execute();
rs = stmt.getResultSet();
}
Ai estou tendo o seguinte erro:
run:
Conexão com o Banco Prosoft estabelecida com sucesso
java.sql.SQLException: Nome de objeto 'CadClientes' inválido.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.execute(JtdsPreparedStatement.java:558)
at dao.daoProsoft.pesquisaTodosClientes(daoProsoft.java:30)
at wpdtoprosoft.Main.main(Main.java:16)
Exception in thread "main" java.lang.NullPointerException
at wpdtoprosoft.Main.main(Main.java:23)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Parece que a tabela não existe no meu bd mas quando eu entro pelo Management Studio eu vejo la a tabela. Tenho uma duvida tambem porque todas as tabelas do banco começam com dbo. seguido do nome da tabela, ai eu tentei colocar o dbo. na query de consulta mas obtive o mesmo erro. Afinal como faço consultas no SQL Server?
Acho que é problema de permissão na tabela… se você não tiver permissão, não vai dar pra fazer select’s, update’s, nada… faça o seguinte, peça para alguem que tenha uma conta de administrador do banco rodar um script de GRANT pra você:
GRANT SELECT ON CadClientes TO usuario_que_vc_usa // pra dar permissao de Select, ou
GRANT ALL ON CadClientes TO usuario_que_vc_usa // pra dar permissao total... select, update, etc