Introdução às declarações

Todas as consultas SQL podem ser condicionalmente divididas em dois grupos:

  • Recuperando dados – Isso inclui a instrução SELECT .
  • Modificando dados – Isso inclui as instruções INSERT , UPDATE e DELETE .

Para o primeiro grupo, o método de interface Statement já familiar para nós é usado - executeQuery() . Em princípio, esse método é suficiente para começar. Abrange uma porcentagem muito grande de consultas que você precisará usar em um trabalho real.

Veremos mais opções mais tarde, mas, por enquanto, aconselho você a se lembrar - se você deseja apenas obter dados de uma tabela, o método executeQuery () na grande maioria dos casos será a escolha certa.

Para o segundo grupo de solicitações, você precisa usar outro método da interface Statement - executeUpdate() . Ao contrário do método executeQuery() , que retorna um ResultSet, esse método retorna um inteiro que informa quantas linhas na tabela foram alteradas quando sua consulta foi executada .

Por exemplo, você pode excluir todas as linhas com a instrução DELETE FROM employee (portanto, tenha muito cuidado). Nesse caso, o método executeUpdate() retornará o número de linhas excluídas. Em algumas situações, saber o número de linhas alteradas pode ser útil para construir algoritmos para trabalhar com dados.

Em princípio, podemos concluir esta questão - já vimos o principal. Para busca de dados - executeQuery() . Para alterar os dados - executeUpdate() .

Obtenha o número de usuários na tabela de usuários usando o método executeQuery() :


	ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
	results.next();
    int count = results.getInt(1);

executeUpdate()

O método executeUpdate() é usado quando sua consulta altera algo em uma tabela. Pode ser qualquer coisa:

  • Declaração de ATUALIZAÇÃO
  • Instrução INSERT
  • DELETE declaração
  • Declaração de PROCEDIMENTO DE CHAMADA

Este método retorna o número de linhas alteradas (ou excluídas).

Vamos escrever um pedido que aumentará o salário de todos os nossos funcionários em 1.000 rublos.


   int rowsCount = statement.executeUpdate("UPDATE  employee SET salary = salary+1000");

Depois que executei esse código, ele retornou na minha mesa o número 6. Minha mesa tinha 6 linhas. Portanto, todas as linhas foram alteradas.

executar()

Às vezes, podem surgir situações em sua vida em que você não sabe exatamente qual solicitação deve executar - uma seleção ou alteração de dados. Nesse caso, os criadores do JDBC adicionaram outro método genérico a ele - execute() .

Este método pode ser usado no lugar dos métodos executeQuery() e executeUpdate() . Você se lembra como esses métodos diferiam? Certo. Tipo de resultado. Portanto, os criadores do JDBC criaram essa solução.

O método execute() retorna booleano. Se esse valor for true , uma solicitação de busca de dados estava em andamento e você precisa chamar o método getResultSet() para obter os dados. Exemplo:


    boolean hasResults = statement.execute("SELECT Count(*) FROM user");
    if ( hasResults ) {
        	ResultSet results =  statement.getResultSet();
        	results.next();
        	int count = results.getInt(1);
 	}

Se esse valor for false , então uma solicitação de alteração de dados estava em andamento e você precisa chamar o método getUpdateCount() para obter o número de linhas alteradas. Exemplo:


    boolean hasResults = statement.execute("UPDATE  employee SET salary = salary+1000");
    if ( !hasResults ) {
      	int count = statement.getUpdateCount();
 	}

Vamos escrever um método que exibe o resultado de uma consulta:


	public void executeAndPrintSQLQuery(String sqlQuery) {
 
        boolean hasResults = statement.execute(sqlQuery);
        if ( hasResults ) {
 	          ResultSet results =  statement.getResultSet();
           	System.out.println(“Your request lines below:);
 
           	while (results.next()) {
 	                 Integer id = results.getInt(1);
     	             String name = results.getString(2);
                      System.out.println(results.getRow() + ". " + id + "\t"+ name);
  	        }
       }
 	  else {
            int count = statement.getUpdateCount();
        	System.out.println(“Number of name strings:+ count);
  	}
}

É assim que o método execute() geralmente é usado na prática.