Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PJ

C# - Update table on Oracle

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.