conexão com base de dados sql através do eclipse

3 respostas
A

Bom dia

Estou a tentar ligar a uma base de dados sql e não estou a conseguir, mesmo por via obdc.
Tenho dois códigos para os dois tipos de ligação e os dois erros que surgem e não consigo perceber porquê :S

package t;
 
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;


public class A{
       
   
        private static String DATABASE_URL = "jdbc:odbc:mvf";

       
        public static void main(String[] args) throws ClassNotFoundException, SQLException{
       
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection connection = DriverManager.getConnection( DATABASE_URL,"123","123" );
}}
ERRO: Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]EXECUTE permission denied on object 'sp_datatype_info', database 'master', owner 'dbo'. at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLGetTypeInfo(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDatabaseMetaData.getTypeInfo(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at t.A.main(A.java:19)
package ligar;

import java.sql.Connection;
import java.sql.DriverManager;
public class Bd{
     private java.sql.Connection  con = null;
     private final String url = "jdbc:microsoft:sqlserver://";
     private final String serverName= "192.9.xxx.xx";
     private final String portNumber = "1433";
     private final String databaseName= "mvf";
     private final String userName = "123";
     private final String password = "123";
     // Informs the driver to use server a side-cursor,
     // which permits more than one active statement
     // on a connection.
     private final String selectMethod = "cursor";
     
     // Constructor
     public Bd(){}
     
     private String getConnectionUrl(){
          return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
     }
     
     private java.sql.Connection getConnection(){
          try{
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
               con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
               if(con!=null) System.out.println("Connection Successful!");
          }catch(Exception e){
               e.printStackTrace();
               System.out.println("Error Trace in getConnection() : " + e.getMessage());
         }
          return con;
      }

     /*
          Display the driver properties, database details
     */

     public void displayDbProperties(){
          java.sql.DatabaseMetaData dm = null;
          java.sql.ResultSet rs = null;
          try{
               con= this.getConnection();
               if(con!=null){
                    dm = con.getMetaData();
                    System.out.println("Driver Information");
                    System.out.println("\tDriver Name: "+ dm.getDriverName());
                    System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
                    System.out.println("\nDatabase Information ");
                    System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
                    System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
                    System.out.println("Avalilable Catalogs ");
                    rs = dm.getCatalogs();
                    while(rs.next()){
                         System.out.println("\tcatalog: "+ rs.getString(1));
                    }
                    rs.close();
                    rs = null;
                    closeConnection();
               }else System.out.println("Error: No active Connection");
          }catch(Exception e){
               e.printStackTrace();
          }
          dm=null;
     }    
     
     private void closeConnection(){
          try{
               if(con!=null)
                    con.close();
               con=null;
          }catch(Exception e){
               e.printStackTrace();
          }
     }
     public static void main(String[] args) throws Exception
       {
          Bd myDbTest = new Bd();
          myDbTest.displayDbProperties();
       }
}
ERRO java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://192.9.xxx.xx:1433;databaseName=mvf;selectMethod=cursor; at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at ligar.Bd.getConnection(Bd.java:28) at ligar.Bd.displayDbProperties(Bd.java:45) at ligar.Bd.main(Bd.java:81) Error Trace in getConnection() : No suitable driver found for jdbc:microsoft:sqlserver://192.9.xxx.xx:1433;databaseName=mvf;selectMethod=cursor; Error: No active Connection

O que poderá estar errado nestes códigos???

Obrigada

3 Respostas

leandrognaf

Vc tem certeza q o seu usuario e 123 e vc importou o driver do BD?

A

Sim tenho a certeza do usuário e o driver está lá:

<classpathentry kind="lib" path="C:/Documents and Settings/teste/Os meus documentos/Transferências/Microsoft SQL Server 2005 JDBC Driver/sqljdbc_1.2/enu/sqljdbc.jar"/>

<classpathentry kind="lib" path="C:/Documents and Settings/teste/Ambiente de trabalho/Projecto/Eclipse/jtds-1.2.5.jar"/>

<classpathentry kind="lib" path="C:/Documents and Settings/teste/Os meus documentos/Transferências/Microsoft SQL Server JDBC Driver 3.0/sqljdbc_3.0/enu/sqljdbc4.jar"/>

:?

A

peço desculpa, mas de facto o driver não estava aplicado no local certo.

No entanto estou com um novo erro:

Exception in thread main com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user (null)’. Reason: Not associated with a trusted SQL Server connection.

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)

at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(Unknown Source)

at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(Unknown Source)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at test.Conn.main(Conn.java:15)

:S

Criado 11 de janeiro de 2011
Ultima resposta 11 de jan. de 2011
Respostas 3
Participantes 2