Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PJ

C# - Update table on Oracle

Recommended Posts

PJ

Já tentei de tudo um pouco para ver se arranjo forma de realizar um update num tabela em Oracle. Já tentei de várias formas com diferentes códigos que vi na internet e aqui mas nada.

Aqui está um pequeno esqueleto da minha classe:

public class DBC{
    private OleDbConnection Connection;
    private OleDbCommand Command;
    public DBC(){
        /*
         * Inicializa a Connection a partir de um ficheiro e o Command
         * A connection fica sempre activa
         */
    }
    public int executeCommand(String c){
        try{
            Command.CommandText = c;
            return Command.ExecuteNonQuery();
        }catch(Exception e){
            MessageBox.Show(e.Message);
        }
    }
    public OleDbDataReader executeQuery(String c){
        try{
            Command.CommandText = c;
            return Command.ExecuteReader();
        }catch(Exception e){
            MessageBox.Show(e.Message);
        }
    }
    public object executeFunction(String c){
        try{
            Command.CommandText = c;
            return Command.ExecuteScalar();
        }catch(Exception e){
            MessageBox.Show(e.Message);
        }
    }
}

Eu consigo tanto realizar querys como inserir valores usando estas funções, basta passar a string SQL correspondente.

Os Updates é que não funcionam, se passar um comando Update mal construído como:

"Update Tabela_Nao_Existente Set Campo=Valor WHERE Campo1=Valor1"

Como a tabela não existe, o comando ainda me dá um erro, o mesmo acontece se eu não colocar um parâmetro,  do género:

"Update Tabela Set Campo= WHERE Campo1=Valor1"

Agora passando um comando válido o programa bloqueia por completo, o Oracle não dá qualquer excepção mas o programa também não avança.

Já tentei realizar isto quer mandando executar o código SQL como executeNonQuery() e executeScalar(), mas bloqueia quer num quer noutro.

Estou a usar Visual C# 2008 ligado a uma base de dados Oracle 11g.

Alguém me sabe ajudar?

Cumps.

Share this post


Link to post
Share on other sites
M6

Já correste a query na consola do Oracle?

Se for um update sobre um conjunto de registos muito grande pode demorar bastante tempo.

Tenta ver no log da BD/ODBC se a query é enviada para o Oracle, se é executada ou se fica pelo caminho.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
PJ

Já executei o código no SQL Developer, a tabela que por acaso o programa tenta modificar não é muito grande, tem pouco mais de 75 registos e eu apenas modico um campo de um registo.

Também já tinha pensado nisso e tinha criado uma tabela só dois campos uma chave e outro para alterar, inserir um registo e quando tento modificar o valor dá-me o mesmo problema, já ando a ver se consigo por isto a trabalhar há umas 7h mais ou menos e não me funciona.

Share this post


Link to post
Share on other sites
M6

Procura no Google se alguém tem um erro idêntico ao teu.

Isso cheira-me a borregada do driver.

Estás a ligar-te via ODBC? Se sim com que driver, o da Oracle ou o da MS?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.