O codigo abaixo e para fazer uma simples inclusao no banco de dados
A tabela foi criada, os campos estão corretos, e conexão foi estabelecida.
Quando executo o comando aparece a seguinte mensagem:
try…
SQL INSERT INTO teste (Nome, Apelido, Cidade) values (‘fulano’,‘fulaninho’,'bsb
');
Inclusao com sucesso :roll:
Ou seja a inclusão acontece para o programa, MAS quando eu abro o banco através do access não tem nada incluido.
Alguém pode testar este codigo por favor, utilize o access mesmo
nome da Tabela: teste
nome dos campos:
Nome - texto
Apelido - texto
Cidade - texto
código do programa:
import java.sql.*;
public class Banco{
private Connection connection;
Banco(){
String url = "jdbc:odbc:BancoDadosSRO";
String username = "";
String password = "";
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
connection = DriverManager.getConnection(url, username, password );
}
catch ( ClassNotFoundException cnfex) {
System.err.println("Falhou a abertura do driver JDBC/ODBC." );
cnfex.printStackTrace();
System.exit( 1 );
}
catch ( SQLException sqlex ) {
System.err.println( "Unable to connect" );
sqlex.printStackTrace();
}
incluir("fulano","fulaninho","bsb");
}
public void incluir (String nome, String apelido, String cidade){
Statement statement;
try {
System.out.println("try......");
String sql = ("INSERT INTO teste (Nome, Apelido, Cidade) values ('"+nome+"','"+apelido+"','"+cidade+"');");
statement.close();
System.out.println("Inclusao com sucesso");
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}
public static void main (String arg[]){
Banco con = new Banco();
}
pstmt.executeUpdate();
System.out.println("O valor retornado pelo executeUpdate "+pstmt.executeUpdate());
pstmt.close();
claro que vai dar um erro porque eu estou inserindo o mesmo dado no banco duas vezes
Mensagem de erro…
java.sql.SQLException: General error
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source)
at Banco.incluir(Banco.java:40)
at Banco.<init>(Banco.java:13)
at Banco.main(Banco.java:52)
E para minha surpresa abri o banco de dados e mesmo com a mensagem de erro os dados foram inseridos.
O comando pstmt.executeUpdate();
aparece duas vezes no programa por isto ocorre o erro, mas mesmo assim inclui no banco de dados, por que erro acontece na segunda vez que ele tenta incluir o mesmo dado no banco. Grava uma vez no banco.
Então tirei a duplicidade do comando pstmt.executeUpdate();
Então, se você usar o setAutoCommit(true), não é preciso usar o commit(), ele será automático. Mas se o seu autoCommit for false, aí tem que dar o commit() manualmente.