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.
GO TO FULL VERSION