Bonjour,

Pour l'appli que je suis entrain de realiser en C# (vS2008 standard), j'ai besoin de faire des insert, upd, del, select sur des tables d'un user d'une base oracle 9i.

Mes insert, select, delete fonction tres bien..par contre mon update ne fonctionne pas et surtout ne me retourne pas d'erreur !

J'ai bien verifie tout comme y faut mes parametres lors de l'execution je vois rien de bizarre..

Ma table contient 3 champs : ot_id (number), ot_name(varchar2(20byte)) et ot_status(number).

Lorsque j'execute ma methode Update, j'y fourni un objet qui contient bien les valeurs que je souhaite. L'identifiant est egalement coherent.

Si j'essaie d'enlever la clause WHERE de mon update je me prends l'erreur suivante : ORA-01036 : illegal variable name/number

J'ai bien cherche (google, faq, tuto et autres (tres bien faits sur ce site au passage)), je trouve pas de solution.

Qqun voit-il une solution ?

Merci d'avance.

voici ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App_Prod_Feeder.App_code.BO.Bean;
using App_Prod_Feeder.App_code.AO.DataAccess;
using Oracle.DataAccess.Client;
using System.Data;
 
namespace App_Prod_Feeder.App_code.AO
{
    class Outputs
    {
        private DataAccess.DataAccess _dataAccess = DataAccess.DataAccess.GetInstance();
        private OutputBean _outputBean;
 
        public IList<OutputBean> GetOutput() {
 
            try {
                string _sql = "SELECT ot_id, ot_name, ot_status FROM prod_feeder.t_output ORDER BY ot_name";
                OracleCommand _command = new OracleCommand(_sql, _dataAccess.GetConn());
                _dataAccess.OpenConn();
                OracleDataReader _dataReader = _command.ExecuteReader();
 
                IList<OutputBean> _outputList = new List<OutputBean>(); 
 
                while(_dataReader.Read()){
                    _outputBean = new OutputBean();
                    _outputBean.Id = Convert.ToInt32(_dataReader["ot_id"].ToString());
                    _outputBean.Name = _dataReader["ot_name"].ToString();
                    _outputBean.Status = Convert.ToInt32(_dataReader["ot_status"].ToString());
 
                    _outputList.Add(_outputBean);
                }
 
                _dataReader.Close();
                _dataReader.Dispose();
                _dataAccess.CloseConn();
 
                return _outputList;
 
            }catch(Exception ex){
                throw ex;
            }
        }
 
        public void Add(OutputBean ouputBean) {
            // Create the OracleCommand
            OracleCommand _command = new OracleCommand();
            _command.Connection = _dataAccess.GetConn();
 
            try {
                // Create OracleParameter
                OracleParameter[] _prm = new OracleParameter[3];
                _prm[0] = _command.Parameters.Add("p_ot_id", OracleDbType.Int32, _dataAccess.GetSeqVal("output_seq"), ParameterDirection.Input);
                _prm[1] = _command.Parameters.Add("p_ot_name", OracleDbType.Varchar2, ouputBean.Name, ParameterDirection.Input);
                _prm[2] = _command.Parameters.Add("p_ot_status", OracleDbType.Int32, ouputBean.Status, ParameterDirection.Input);
                _dataAccess.OpenConn();
                _command.CommandText = "INSERT INTO prod_feeder.t_output (ot_id, ot_name, ot_status) VALUES (:p_ot_id, :p_ot_name, :p_ot_status)";
                _command.ExecuteNonQuery();
 
                _command.Parameters.Clear();
                _command.Dispose();
                _dataAccess.CloseConn();
 
            }catch(Exception ex){
                throw ex;
            }
        }
 
        public void Update(OutputBean ouputBean) {
            // Create the OracleCommand
            OracleCommand _command;
            try {
                string _sql = "UPDATE prod_feeder.t_output SET ot_name = :p_ot_name, ot_status = :p_ot_status WHERE ot_id = :p_ot_id";
                _command = new OracleCommand(_sql, _dataAccess.GetConn());
                _command.CommandType = CommandType.Text;
 
                // Create OracleParameter
                OracleParameter p_ot_id = new OracleParameter("p_ot_id", OracleDbType.Int32, ParameterDirection.Input);
                p_ot_id.Value = ouputBean.Id;
                OracleParameter p_ot_name = new OracleParameter("p_ot_name", OracleDbType.Varchar2, ParameterDirection.Input);
                p_ot_name.Value = ouputBean.Name;
                OracleParameter p_ot_status = new OracleParameter("p_ot_status", OracleDbType.Int32, ParameterDirection.Input);
                p_ot_status.Value = ouputBean.Status;
 
 
                _command.Parameters.Add(p_ot_id);
                _command.Parameters.Add(p_ot_name);
                _command.Parameters.Add(p_ot_status);
 
 
                _dataAccess.OpenConn();
 
                _command.ExecuteNonQuery();
 
                _command.Parameters.Clear();
                _command.Dispose();
                _dataAccess.CloseConn();
 
            }catch(Exception ex){
                throw ex;
            }
        }
 
        public void Delete(OutputBean outputBean) {
          // Create the OracleCommand
            OracleCommand _command = new OracleCommand();
            _command.Connection = _dataAccess.GetConn();
            try {
                // Create OracleParameter
                OracleParameter[] _prm = new OracleParameter[1];
                _prm[0] = _command.Parameters.Add("p_ot_id", OracleDbType.Int32, outputBean.Id, ParameterDirection.Input);
                _dataAccess.OpenConn();
                _command.CommandText = "DELETE FROM prod_feeder.t_output WHERE ot_id = :p_ot_id";
                _command.ExecuteNonQuery();
 
                _command.Parameters.Clear();
                _command.Dispose();
                _dataAccess.CloseConn();
            }catch(Exception ex){
            throw ex;
            }
        }
    }
}