Manipulação de dados com JDBC, com banco MySQL

A forma mais simples de manipular os dados de um banco em Java é utilizar API JDBC. Para demonstrar alguns exemplos de utilização, usaremos o banco de dados MySQL, com a tabela abaixo:

CREATE TABLE BOOK
(
ID bigint PRIMARY KEY NOT NULL,
DESCRIPTION text,
ILUSTRATIONS bit DEFAULT 0,
ISBN varchar(255),
NBOFPAGE int,
PRICE real,
TITLE varchar(255) NOT NULL
);
CREATE UNIQUE INDEX PRIMARY ON BOOK(ID);

Para executar um comando no banco é preciso adicionar o driver do banco no classpath e então uma criar uma conexão:

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://host/database";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url,user, password);

Feito isto, é necessário criar um Statement com o comando SQL a ser executado:

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select title from book");

E depois percorrer o ResultSet com os dados:

while(resultSet.next()){
    System.out.println(resultSet.getString("title"));
}

Além do Statement é possível criar um PreparedStatement para informar parâmetros para a consulta:

PreparedStatement preparedStatement = connection.prepareStatement("select title from book where id=?");
preparedStatement.setInt(1, 25346);
ResultSet anotherResultSet = preparedStatement.executeQuery();
while(anotherResultSet.next()){
    System.out.println(anotherResultSet.getString("title"));
}

Para executar um comando para inserir ou fazer atualização de um registro, basta utilizar o PreparedStatement e ao final chamar o método executeUpdate, que retornará o número de linhas afetadas pelo comando:

String sql = "insert into book (ID, TITLE, PRICE, DESCRIPTION, ISBN, ILUSTRATIONS, NBOFPAGE) values (?,?,?,?,?,?,?)";

PreparedStatement anotherPreparedStatement = connection.prepareStatement(sql);
anotherPreparedStatement.setLong(1, 13523L);
anotherPreparedStatement.setString(2, "The hitchhicker's guide to the galaxy");
anotherPreparedStatement.setFloat(3, 12.5F);
anotherPreparedStatement.setString(4, "Science Fiction");
anotherPreparedStatement.setString(5, "2329-1341-32918");
anotherPreparedStatement.setBoolean(6, false);
anotherPreparedStatement.setInt(7, 354);

int result = anotherPreparedStatement.executeUpdate();
System.out.println(result);

As exeções lançadas pelos códigos acima foram omitidas, para melhor entendimento.
A seguir a classe por completo:

public class JDBCSample {

	public static void main(String[] args) {
		try {			
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://host/database";
			String user = "root";
			String password = "root";
			
			Connection connection = DriverManager.getConnection(url,user, password);
			
			Statement statement = connection.createStatement();
			ResultSet resultSet = statement.executeQuery("select title from book");
			
			while(resultSet.next()){
				System.out.println(resultSet.getString("title"));
			}
			
			PreparedStatement preparedStatement = connection.prepareStatement("select title from book where id=?");
			preparedStatement.setInt(1, 25346);
			ResultSet anotherResultSet = preparedStatement.executeQuery();
			
			while(anotherResultSet.next()){
				System.out.println(anotherResultSet.getString("title"));
			}
			
			String sql = "insert into book (ID, TITLE, PRICE, DESCRIPTION, ISBN, ILUSTRATIONS, NBOFPAGE) values (?,?,?,?,?,?,?)";
			PreparedStatement anotherPreparedStatement = connection.prepareStatement(sql);
			anotherPreparedStatement.setLong(1, 13523L);
			anotherPreparedStatement.setString(2, "The hitchhicker's guide to the galaxy");
			anotherPreparedStatement.setFloat(3, 12.5F);
			anotherPreparedStatement.setString(4, "Science Fiction");
			anotherPreparedStatement.setString(5, "2329-1341-32918");
			anotherPreparedStatement.setBoolean(6, false);
			anotherPreparedStatement.setInt(7, 354);
			int result = anotherPreparedStatement.executeUpdate();
			System.out.println(result);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s