2002-10-09 Brian Ritchie <brianlritchie@hotmail.com>
[mono.git] / mcs / class / System.Data.Odbc / System.Data.Odbc / OdbcParameter.cs
1 //
2 // System.Data.Odbc.OdbcParameter
3 //
4 // Authors:
5 //   Brian Ritchie (brianlritchie@hotmail.com)
6 //
7 // Copyright (C) Brian Ritchie, 2002
8 //
9
10 using System;
11 using System.Data;
12 using System.Data.Common;
13
14 namespace System.Data.Odbc
15 {
16         public sealed class OdbcParameter : MarshalByRefObject, IDbDataParameter, 
17 IDataParameter, ICloneable
18         {
19                 #region Fields
20
21                 string name;
22                 object value;
23                 int size;
24                 bool isNullable;
25                 byte precision;
26                 byte scale;
27                 DataRowVersion sourceVersion;
28                 string sourceColumn;
29                 ParameterDirection direction;
30                 OdbcType odbcType;
31                 DbType dbType;
32
33                 int IntValue;
34
35                 #endregion
36
37                 #region Constructors
38
39                 public OdbcParameter ()
40                 {
41                         name = String.Empty;
42                         value = null;
43                         size = 0;
44                         isNullable = true;
45                         precision = 0;
46                         scale = 0;
47                         sourceColumn = String.Empty;
48                 }
49
50                 public OdbcParameter (string name, object value)
51                         : this ()
52                 {
53                         this.name = name;
54                         this.value = value;
55                 }
56
57                 public OdbcParameter (string name, OdbcType dataType)
58                         : this ()
59                 {
60                         this.name = name;
61                         OdbcType = dataType;
62                 }
63
64                 public OdbcParameter (string name, OdbcType dataType, int size)
65                         : this (name, dataType)
66                 {
67                         this.size = size;
68                 }
69
70                 public OdbcParameter (string name, OdbcType dataType, int size, string 
71 srcColumn)
72                         : this (name, dataType, size)
73                 {
74                         this.sourceColumn = srcColumn;
75                 }
76
77                 public OdbcParameter(string name, OdbcType dataType, int size, 
78 ParameterDirection direction, bool isNullable, byte precision, byte scale, 
79 string srcColumn, DataRowVersion srcVersion, object value)
80                         : this (name, dataType, size, srcColumn)
81                 {
82                         this.direction = direction;
83                         this.isNullable = isNullable;
84                         this.precision = precision;
85                         this.scale = scale;
86                         this.sourceVersion = srcVersion;
87                         this.value = value;
88                 }
89
90                 #endregion
91
92                 #region Properties
93
94                 public DbType DbType {
95                         get { return dbType; }
96                         set {
97                                 dbType = value;
98                         }
99                 }
100
101                 public ParameterDirection Direction {
102                         get { return direction; }
103                         set { direction = value; }
104                 }
105
106                 public bool IsNullable {
107                         get { return isNullable; }
108                 }
109
110                 public OdbcType OdbcType {
111                         get { return odbcType; }
112                         set {
113                                 odbcType = value;
114                         }
115                 }
116
117                 public string ParameterName {
118                         get { return name; }
119                         set { name = value; }
120                 }
121
122                 public byte Precision {
123                         get { return precision; }
124                         set { precision = value; }
125                 }
126
127                 public byte Scale {
128                         get { return scale; }
129                         set { scale = value; }
130                 }
131
132                 public int Size {
133                         get { return size; }
134                         set { size = value; }
135                 }
136
137                 public string SourceColumn {
138                         get { return sourceColumn; }
139                         set { sourceColumn = value; }
140                 }
141
142                 public DataRowVersion SourceVersion {
143                         get { return sourceVersion; }
144                         set { sourceVersion = value; }
145                 }
146
147                 public object Value {
148                         get {
149                                 return IntValue;
150                         }
151                         set { this.IntValue =(int) value; }
152                 }
153
154                 #endregion // Properties
155
156                 #region Internal Properties
157
158                 internal void Bind(int hstmt,int ParamNum)
159                 {
160                         if (OdbcType==OdbcType.Integer)
161                         {
162                                 OdbcReturn ret=libodbc.SQLBindParam(hstmt, Convert.ToInt16(ParamNum), 4, 
163 4, 0,0,ref IntValue, 0);
164                                 libodbc.DisplayError("SQLBindParam",ret);
165
166                         }
167                         else Console.WriteLine("Unknown Paramter Type");
168
169                 }
170
171                 #endregion // Internal Properties
172
173                 #region Methods
174
175                 [MonoTODO]
176                 object ICloneable.Clone ()
177                 {
178                         throw new NotImplementedException ();
179                 }
180
181                 public override string ToString ()
182                 {
183                         return ParameterName;
184                 }
185                 #endregion
186         }
187 }
188