OracleDependency, l'événement ne marche jamais

JeanDupontX - 8 août 2012 à 11:00
 JeanDupontX - 25 sept. 2012 à 16:41
Bonjour tout le monde !

J'ai quelques problèmes pour utiliser OracleDependency.

J'ai lu les docs sur MSDN et Oracle puis copier les codes pour les tester, mais ça ne marche pas.
L'événement : "on_my_event" n'ai jamais appelé.

Est-ce que vous savez pourquoi ? Ais-je fait une erreur ?

Le User a les droits (Change Notification) et Oracle est en version 11.2.0.3.0.

Voici le code :

 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Oracle.DataAccess.Client; 
 
namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 
    string connection_string = "Data Source=My_srv;User Id=My_usr;Password=My_pwd;"; 
    OracleConnection connection = null; 
    OracleDependency dependency = null; 
    OracleCommand my_select = null; 
    OracleCommand my_insert = null; 
 
    public Form1() 
    { 
        InitializeComponent(); 
    } 
 
    private void TB_insert_event(object sender, EventArgs e) 
    { 
        if (TB_insert.Text == "Name of your insert") 
            TB_insert.Clear(); 
    } 
 
    private void insert(object sender, EventArgs e) 
    { 
        connection = new OracleConnection(connection_string); 
        my_insert = connection.CreateCommand(); 
        my_insert.CommandText = "INSERT INTO USR_DEV_TRUNK.WPARAM (wpa_codeparam) VALUES ('" + TB_insert.Text + "')"; 
        connection.Open(); 
        my_insert.ExecuteNonQuery(); 
        connection.Close(); 
    } 
 
    private void Set_dep(object sender, EventArgs e) 
    { 
        OracleDependency.Port = 3048; 
        connection = new OracleConnection(connection_string); 
        connection.Open(); 
        my_select = connection.CreateCommand(); 
        my_select.CommandText = "SELECT wpa_codeparam FROM USR_DEV_TRUNK.WPARAM"; 
        dependency = new OracleDependency(); 
        dependency.AddCommandDependency(my_select); 
        my_select.Notification.IsNotifiedOnce = false; 
        my_select.ExecuteNonQuery(); 
        dependency.OnChange += new OnChangeEventHandler(on_my_event); 
        TB_dependency.Text = "The dependency is set, do your insert to see if it works"; 
        connection.Close(); 
    } 
 
    public void on_my_event(object obj, OracleNotificationEventArgs arg) 
    { 
        TB_dependency.Text = "Yay ! It worked !"; 
    } 
}


J'ai deux boutons :
- Un pour set la dépendence (fonction : Set_dep)
- Un pour faire l'Insert (fonction : insert)

J'ai deux TextBlocks :
- Un pour prendre le nom de l'insert (TB_insert)
- Un pour montrer l'état de la dépendence (TB_dependency)

PS : J'ai aussi essayé de le faire en Console mais ça ne marche toujours pas.
Il est possible qu'il me manque quelque chose sur la DB, par exemple une Queue (comme sur SQL serveur) mais je n'ai vu ça dans aucun des forums/docs que j'ai visités.
Si vous savez quelque chose, je suis preneur !

1 réponse

Petit up !
0
Rejoignez-nous