Procedure sql server 2012 + java

1

I want to structure an INSERT using JAVA in the same way that the INSERT is structured in VB .NET. Here's the code in VB .NET:

Const _spName = "dbo.MEJT_SP_CAD_PRODUTOS"
Public Function IncluirProduto(produto As MEJTProdutoEnt) As Integer
      Dim _nomeServidor As String = String.Empty
  Dim param(6) As SqlParameter
  Try
     param(0) = New SqlParameter("@MODO", "INSERIR")
     param(1) = New SqlParameter("@Nome_Produto", produto.Nome)
     param(2) = New SqlParameter("@Fornecedor", produto.Fornecedor)
     param(3) = New SqlParameter("@Codigo_Barras", produto.CodBarras)
     param(4) = New SqlParameter("@Marca", produto.Marca)
     param(5) = New SqlParameter("@Preco_Compra", produto.PrecoCompra)
     param(6) = New SqlParameter("@Categoria", produto.Categoria)

     produto.ID_Produto = Convert.ToInt32(MyBase.ExecuteScalar(_spName, param))

     Return produto.ID_Produto
  Catch ex As Exception

     Throw New Exception(ex.Message)
  End Try
   End Function

I researched a bit how I can use this same structure in JAVA and saw that they use CallableStatement , but in a different way. I wonder if I can use this structure. They could indicate what I can search to try to mount this way.

Thank you for your collaboration.

    
asked by anonymous 16.10.2017 / 22:35

2 answers

2

It would look something like this:

CallableStatement cs = conexao.prepareCall("{ ? = call dbo.MEJT_SP_CAD_PRODUT(?, ?, ?, ?, ?, ?, ?) }");  
int id;

cs.registerOutParameter(1, Types.INTEGER);
cs.setString(2, "INSERIR");
cs.setString(3, produto.getNome());
cs.setString(4, produto.getFornecedor());
cs.setString(5, produto.getCodBarras());
cs.setString(6, produto.getMarca());
cs.setString(7, produto.getNome());
cs.setString(8, produto.getPrecoCompra()); // Verifique nesta linha o tipo do seu parâmetro
cs.setString(9, produto.getCategoria());

cs.execute();
id = cs.getInt(1);

produto.setID_produto(id);
return id;

Remembering that you should set the connection before running the code.

    
17.10.2017 / 05:44
0

I also tested the code as follows:

public void create(Produto produto){
    try {
         cs = this.con.prepareCall("{call dbo.MEJT_SP_CAD_PRODUTOS(?, ?, ?, ?, ?) }");           
         cs.setString("MODO", "INSERIR");
         cs.setString("NOME", produto.getNome());
         cs.setString("FORNECEDOR", produto.getForncedor().getNome());
         cs.setString("CODIGO_BARRAS", produto.getCodigoBarras());
         cs.setString("MARCA", produto.getMarca().getNome());

         cs.executeUpdate();

    } catch (Exception e) {
        System.out.println("Erro : "+ e.getMessage());          
        e.printStackTrace();        
    }       
}

It worked legally if someone is interested in using another way. :)

    
18.10.2017 / 00:28