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 ?
