2002-10-09 Rodrigo Moya <rodrigo@ximian.com>
[mono.git] / mcs / class / System.Data / System.Data.Odbc / libodbc.cs
1 //
2 // System.Data.Odbc.libodbc
3 //
4 // Authors:
5 //   Brian Ritchie (brianlritchie@hotmail.com)
6 //
7 //
8 // Copyright (C) Brian Ritchie, 2002
9 //
10 //
11
12 using System.Data;
13 using System.Data.Common;
14 using System.Runtime.InteropServices;
15
16 namespace System.Data.Odbc
17 {
18         internal enum OdbcHandleType {
19                 Env = 1,
20                 Dbc = 2,
21                 Stmt = 3,
22                 Desc = 4
23         };
24
25         internal enum OdbcReturn {
26                 Error = -1,
27                 InvalidHandle = -2,
28                 StillExecuting = 2,
29                 NeedData = 99,
30                 Success = 0,
31                 SuccessWithInfo = 1
32         }
33
34         internal enum OdbcEnv {
35                 OdbcVersion = 200,
36                 ConnectionPooling = 201,
37                 CPMatch = 202
38         }
39
40         [StructLayout(LayoutKind.Sequential)]
41         public struct OdbcTimestamp
42         {
43                 public short year;
44                 public ushort month;
45                 public ushort day;
46                 public ushort hour;
47                 public ushort minute;
48                 public ushort second;
49                 public ulong fraction;
50         }
51
52         sealed internal class libodbc
53         {
54                 public static void DisplayError(string Msg, OdbcReturn Ret)
55                 {
56                         if ((Ret!=OdbcReturn.Success) && (Ret!=OdbcReturn.SuccessWithInfo)) {
57                                 Console.WriteLine("ERROR: {0}: <{1}>",Msg,Ret);
58
59                         }
60                 }
61
62
63
64                 [DllImport("libodbc")]
65                 public static extern OdbcReturn SQLAllocHandle (ushort HandleType, int 
66 InputHandle, ref int OutputHandlePtr);
67
68
69                 [DllImport("libodbc")]
70                 public static extern OdbcReturn SQLSetEnvAttr (int EnvHandle, ushort 
71 Attribute, IntPtr Value, int StringLength);
72
73
74                 [DllImport("libodbc")]
75                 public static extern OdbcReturn SQLConnect (int ConnectionHandle, string 
76 ServerName, short NameLength1, string UserName, short NameLength2, string 
77 Authentication, short NameLength3);
78
79                 [DllImport("libodbc")]
80                 public static extern OdbcReturn SQLExecDirect (int StatementHandle, string 
81 StatementText, int TextLength);
82
83                 [DllImport("libodbc")]
84                 public static extern OdbcReturn SQLRowCount (int StatementHandle, ref int 
85 RowCount);
86
87                 [DllImport("libodbc")]
88                 public static extern OdbcReturn SQLNumResultCols (int StatementHandle, ref 
89 short ColumnCount);
90
91                 [DllImport("libodbc")]
92                 public static extern OdbcReturn SQLFetch (int StatementHandle);
93
94                 [DllImport("libodbc")]
95                 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort 
96 ColumnNumber, short TargetType, ref int TargetPtr, int BufferLen, ref int 
97 Len);
98
99                 [DllImport("libodbc")]
100                 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort 
101 ColumnNumber, short TargetType, byte[] TargetPtr, int BufferLen, ref int 
102 Len);
103
104                 [DllImport("libodbc")]
105                 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort 
106 ColumnNumber, short TargetType, ref float TargetPtr, int BufferLen, ref int 
107 Len);
108
109                 [DllImport("libodbc")]
110                 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort 
111 ColumnNumber, short TargetType, ref OdbcTimestamp TargetPtr, int BufferLen, 
112 ref int Len);
113
114                 [DllImport("libodbc")]
115                 public static extern OdbcReturn SQLDescribeCol(int StatmentHandle, ushort 
116 ColumnNumber, byte[] ColumnName, short BufferLength, ref short NameLength, 
117 ref short DataType, ref short ColumnSize, ref short DecimalDigits, ref short 
118 Nullable);
119
120                 [DllImport("libodbc")]
121                 public static extern OdbcReturn SQLFreeHandle(ushort HandleType, int 
122 SqlHandle);
123
124                 [DllImport("libodbc")]
125                 public static extern OdbcReturn SQLDisconnect(int ConnectionHandle);
126
127                 [DllImport("libodbc")]
128                 public static extern OdbcReturn SQLPrepare(int StatementHandle, string 
129 Statement, int TextLength);
130
131                 [DllImport("libodbc")]
132                 public static extern OdbcReturn SQLExecute(int StatementHandle);
133
134                 [DllImport("libodbc")]
135                 public static extern OdbcReturn SQLSetConnectAttr(int ConnectionHandle, 
136 int Attribute, uint Value, int Length);
137
138                 [DllImport("libodbc")]
139                 public static extern OdbcReturn SQLEndTran(int HandleType, int Handle, 
140 short CompletionType);
141
142                 [DllImport("libodbc")]
143                 public static extern OdbcReturn SQLBindParam(int StatementHandle, short 
144 ParamNum, short ValueType,
145                                 short ParamType, int LenPrecision, short ParamScale, ref int ParamValue, 
146 int StrLen);
147
148                 [DllImport("libodbc")]
149                 public static extern OdbcReturn SQLBindParam(int StatementHandle, short 
150 ParamNum, short ValueType,
151                                 short ParamType, int LenPrecision, short ParamScale, byte[] ParamValue, 
152 int StrLen);
153
154                 [DllImport("libodbc")]
155                 public static extern OdbcReturn SQLCancel(int StatementHandle);
156
157                 [DllImport("libodbc")]
158                 public static extern OdbcReturn SQLCloseCursor(int StatementHandle);
159         }
160 }
161