JDBC + MS Sql Server 2000 não consigo dar Insert

2 respostas
wagnerrn

Já faz alguns dias que estou pesquisando e não consigo dar insert em uma tabela do banco de dados que já consegui conectar e listar.
Segue o código:

import java.sql.*;

public class Conecta {
	
	private java.sql.Connection con = null;
	private final String driver = "jdbc:microsoft:sqlserver://";
	private final String servidor = "FENIX-NOTE";
	private final String porta = "1433";
	private final String base = "pubs";
	private final String usuario = "sa";
	private final String senha = "teste";
	private final String metodo = "cursor";

   public Conecta() {}
   
   private String pegaCaminhoConexao() {
   	return driver+servidor+":"+porta+";databaseName="+base+";selectMethod="+metodo+";";
   }
   
   private java.sql.Connection pegaConexao() {
   	try {
   		Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
   		con = java.sql.DriverManager.getConnection(pegaCaminhoConexao(),usuario,senha);
   	//	if(con!=null) System.out.println("Conexao bem sucedida!");
   	} catch(Exception e) {
   		e.printStackTrace();
   		System.out.println("Rastreamento do erro em pegaConexao() : " + e.getMessage());
   	}
   	return con;
   }
   
  	public void mostraPropriedades() {
  		java.sql.DatabaseMetaData dm = null;
  		java.sql.ResultSet rs = null;
  		try {
  			con = this.pegaConexao();
  			if (con!=null){
  				dm = con.getMetaData();
  				System.out.println("Informação do Driver");
  				System.out.println("\tNome do Driver: "+ dm.getDriverName());
  				System.out.println("\tVersão do Driver: "+ dm.getDriverVersion());
  				System.out.println("\nInformação da Base de Dados");
  				System.out.println("\tNome da Base: "+ dm.getDatabaseProductName());
  				System.out.println("\tVersão da Base: "+ dm.getDatabaseProductVersion());
  				System.out.println("\nCatalogos disponíveis");
  				rs = dm.getCatalogs();
  				while(rs.next()) {
  					System.out.println("\tCatalogo: "+ rs.getString(1));
  				}
  				rs.close();
  				rs = null;
  				fechaConexao();
  			} else System.out.println("Erro: Conexão não está ativa");
  		} catch(Exception e) {
  			e.printStackTrace();
  		}
  		dm = null;
  		fechaConexao();
  	}
  	
  	private void fechaConexao(){
  		try {
  			if(con!=null) con.close();
  			con =null;
  		} catch(Exception e) {
  			e.printStackTrace();
  		}
  	}
  	
  	public void consultaDados() {
  		System.out.println("\n**** INICIO DA CONSULTA *****");
  		try {
  			Connection c = pegaConexao();
  			PreparedStatement ps = c.prepareStatement("select top 10 * from jobs");
  			ResultSet r = ps.executeQuery();
  			while (r.next()){
  			System.out.println(r.getString(1)+"\t"+r.getString(2)+"\t"+r.getString(3)+"\t"+r.getString(4));
  		}
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  		System.out.println("****** FIM DA CONSULTA ******\n");
  		fechaConexao();
  	}
  	
  	public void insereDados() {	
  		Connection c = pegaConexao();
  		PreparedStatement ps = null;
  		try {
  			ps = c.prepareStatement("insert into jobs('job_desc','max_lvl','min_lvl') values (?,?,?)");
  			ps.setString(1,"teste");
  			ps.setInt(2,1);
  			ps.setInt(3,10);
  		} catch (SQLException se) {
  			System.out.println("Uma exceção durante o preparo do Statement: provavelmente erro no SQL.");
  			se.printStackTrace();
  			System.exit(1);
  		}
  		try {
  			ps.executeUpdate();  			
  		} catch (SQLException se) {
 		  	System.out.println("Uma exceção durante a atualização: provavelmente erro no SQL ou problema na conexão.");
  			se.printStackTrace();
  			System.exit(1);
  		}
  		fechaConexao();
  	}
  	
  	public static void main(String args[]) throws Exception {
  		Conecta baseTeste = new Conecta();
  		baseTeste.mostraPropriedades();	
		baseTeste.consultaDados();  			
  		baseTeste.insereDados();
  	}
  	
}

E agor abaixo o resultado:
[list]
--------------------Configuration: --------------------
Informação do Driver
Nome do Driver: SQLServer
Versão do Driver: 2.2.0037

Informação da Base de Dados
Nome da Base: Microsoft SQL Server
Versão da Base: Microsoft SQL Server 2000 - 8.00.760 (Intel X86)
Dec 17 2002 14:22:05
Copyright © 1988-2003 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

Catalogos disponíveis
Catalogo: BancoDeHoras
Catalogo: master
Catalogo: msdb
Catalogo: Northwind
Catalogo: pubs
Catalogo: tempdb

**** INICIO DA CONSULTA *****
1 New Hire - Job not specified 10 10
2 Chief Executive Officer 200 250
3 Business Operations Manager 175 225
4 Chief Financial Officier 175 250
5 Publisher 150 250
6 Managing Editor 140 225
7 Marketing Manager 120 200
8 Public Relations Manager 100 175
9 Acquisitions Manager 75 175
10 Productions Manager 75 165
****** FIM DA CONSULTA ******

Uma exceção durante a atualização: provavelmente erro no SQL ou problema na conexão.

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Invalid object name jobs.

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Source)

at Conecta.insereDados(Conecta.java:100)

at Conecta.main(Conecta.java:113)

Process completed.
[/list]

Alguem tem idéia do que possa estar acontecendo ?

2 Respostas

celsofurtado

E aí,

Tira o apostrofo do comando insert no nome dos campos, assim:

ps = c.prepareStatement("insert into jobs(job_desc, max_lvl, min_lvl) values (?,?,?)");

Espero ter ajudado,

Té mais.

wagnerrn

Era isso mesmo meu amigo.

Muito obrigado. :slight_smile:

Criado 20 de junho de 2007
Ultima resposta 20 de jun. de 2007
Respostas 2
Participantes 2