Procedure sql server 2012 + java

Asked

Viewed 61 times

1

I want to structure an INSERT using JAVA in the same way that INSERT is structured in VB .NET. It follows how the code is 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 little how I can use this same structure in JAVA and I saw that they use Callablestatement, but in a different way. I wonder if you can use this structure. Could you indicate what I can search to try to mount this way.

Thank you for your cooperation.

2 answers

2

It would look more or less 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 must set the connection before executing the code.

  • Thank you very much!!

  • @Danielmoura if the answer has solved your problem don’t forget to click next to it to mark it as chosen so it can serve other people with similar doubts.

0

I also ran a test with 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 great if someone was interested in using another way. :)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.