-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Seção 31: Acesso a Banco de Dados com JDBC #52
Comments
Conexão com o banco:Obs: é necessário baixar o Connector J: Logo após baixar ele, eu preciso criar uma pasta onde salvo bibliotecas externas ao Java. Em seguida no Eclipse eu adiciono essa biblioteca ao projeto. Pronto, conectei a bilbioteca! Conectar com o banco de dados no JDBC é instanciar um objeto do tipo Connection: Código: private static Connection conn = null;
// Método para conectar com o banco de dados:
public static Connection getConnection() {
if(conn == null) {
try {
Properties props = loadProperties();
String url = props.getProperty("dburl");
conn = DriverManager.getConnection(url, props);
System.out.println("Conexão feita!");
}
catch(SQLException e) {
throw new DbException(e.getMessage());
}
}
return conn;
}
// Método para fechar a conexão
public static void closeConnection() {
if (conn != null) {
try {
conn.close();
} catch(SQLException e) {
throw new DbException(e.getMessage());
}
}
}
// Método para carregaras propriedades:
private static Properties loadProperties() {
try (FileInputStream fs = new FileInputStream("db.properties")){
Properties props = new Properties();
props.load(fs);
// esse props.load(fs) vai fazer a leitura do arquivo properties apontadado pelo meu InputStreamFs e vai guardar os dados dentro do objeto props
return props;
}catch (IOException e) {
throw new DbException(e.getMessage());
}
} Conectando Intellij + MySql: |
Inserir DadosClass PreparedStatement Connection conn = null;
PreparedStatement st = null;
try {
conn = DB.getConnection();
st = conn.prepareStatement(
"INSERT INTO seller"
+ "(Name, Email, BirthDate, BaseSalary, DepartmentId)"
+ "VALUES"
+ "(?, ?, ?, ?, ?)"
);
} Quando eu for mexer com data com JDBC eu DEVO utilizar o st.setDate(3, new java.sql.Date(sdf.parse("22/04/1985").getTime())); Agora o código completo com anotações: public class program {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Connection conn = null;
PreparedStatement st = null;
try {
conn = DB.getConnection();
st = conn.prepareStatement(
"INSERT INTO seller"
+ "(Name, Email, BirthDate, BaseSalary, DepartmentId)"
+ "VALUES"
+ "(?, ?, ?, ?, ?)",
Statement.RETURN_GENERATED_KEYS); // fazendo isso eu retorno o ID da nova informação qeu adicionei
st.setString(1, "Carl Purple");
st.setString(2, "[email protected]");
st.setDate(3, new java.sql.Date(sdf.parse("22/04/1985").getTime()));
st.setDouble(4, 3000.0);
st.setInt(5, 4);
// Para executar o comando:
int rowsAffected = st.executeUpdate();
// Quando é uma oepração em que eu vou alterar os dados eu utilizo update
// O resultado dessa operação é um número inteiro indicando quantas linhas foram alteradas
if(rowsAffected > 0) {
// st.getGeneratedKeys(); retorna um objeto do tipo ResultSet
ResultSet rs = st.getGeneratedKeys(); // E pode ter mais de um valor
while(rs.next()) {
int id = rs.getInt(1); // Assim indico que quero o valor da primeria coluna, pois estamos inserindo apenas um
System.out.println("Done! Id = " + id);
}
}else {
System.out.println("No Rows affected!");
}
//
}catch (SQLException e) {
e.printStackTrace();
}catch(ParseException e) {
e.printStackTrace();
}finally{
DB.closeStatement(st);
DB.closeConnection();
}
}
} |
Deletar DadosÉ muito comum que aconteça um problema de integridade referencial, por isso criamos um exceção personalizada: Por exemplo, se eu tentar apagar um id que é uma chave estrangeira em outra tabela, por exemplo, um departamento que possua vendedores atrelados a ele. Isso que é um problema de integridade referencial. Por isso precisamos cria uma exceção personalizada. Código: public static void main(String[] args) {
Connection conn = null;
PreparedStatement st = null;
try {
conn = DB.getConnection();
st = conn.prepareStatement(
"DELETE FROM department"
+ "WHERE"
+ "Id = ?");
st.setInt(1, 2);
// Não vou conseguir apagar porque esse id está atrelado a outra tabela
int rowsAffected = st.executeUpdate();
System.out.println("Done! Rows affected: " + rowsAffected);
}catch(SQLException e) {
throw new DbIntegrityException(e.getMessage());
}
finally {
DB.closeStatement(st);
DB.closeConnection();
}
} |
Intro:
JDBC.pdf
The text was updated successfully, but these errors were encountered: