2 // System.Data.Odbc.libodbc
5 // Brian Ritchie (brianlritchie@hotmail.com)
8 // Copyright (C) Brian Ritchie, 2002
13 using System.Data.Common;
14 using System.Runtime.InteropServices;
16 namespace System.Data.Odbc
18 internal enum OdbcHandleType {
25 internal enum OdbcReturn {
34 internal enum OdbcEnv {
36 ConnectionPooling = 201,
40 [StructLayout(LayoutKind.Sequential)]
41 public struct OdbcTimestamp
49 public ulong fraction;
52 sealed internal class libodbc
54 public static void DisplayError(string Msg, OdbcReturn Ret)
56 if ((Ret!=OdbcReturn.Success) && (Ret!=OdbcReturn.SuccessWithInfo)) {
57 Console.WriteLine("ERROR: {0}: <{1}>",Msg,Ret);
64 [DllImport("libodbc")]
65 public static extern OdbcReturn SQLAllocHandle (ushort HandleType, int
66 InputHandle, ref int OutputHandlePtr);
69 [DllImport("libodbc")]
70 public static extern OdbcReturn SQLSetEnvAttr (int EnvHandle, ushort
71 Attribute, IntPtr Value, int StringLength);
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);
79 [DllImport("libodbc")]
80 public static extern OdbcReturn SQLExecDirect (int StatementHandle, string
81 StatementText, int TextLength);
83 [DllImport("libodbc")]
84 public static extern OdbcReturn SQLRowCount (int StatementHandle, ref int
87 [DllImport("libodbc")]
88 public static extern OdbcReturn SQLNumResultCols (int StatementHandle, ref
91 [DllImport("libodbc")]
92 public static extern OdbcReturn SQLFetch (int StatementHandle);
94 [DllImport("libodbc")]
95 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort
96 ColumnNumber, short TargetType, ref int TargetPtr, int BufferLen, ref int
99 [DllImport("libodbc")]
100 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort
101 ColumnNumber, short TargetType, byte[] TargetPtr, int BufferLen, ref int
104 [DllImport("libodbc")]
105 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort
106 ColumnNumber, short TargetType, ref float TargetPtr, int BufferLen, ref int
109 [DllImport("libodbc")]
110 public static extern OdbcReturn SQLGetData (int StatementHandle, ushort
111 ColumnNumber, short TargetType, ref OdbcTimestamp TargetPtr, int BufferLen,
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
120 [DllImport("libodbc")]
121 public static extern OdbcReturn SQLFreeHandle(ushort HandleType, int
124 [DllImport("libodbc")]
125 public static extern OdbcReturn SQLDisconnect(int ConnectionHandle);
127 [DllImport("libodbc")]
128 public static extern OdbcReturn SQLPrepare(int StatementHandle, string
129 Statement, int TextLength);
131 [DllImport("libodbc")]
132 public static extern OdbcReturn SQLExecute(int StatementHandle);
134 [DllImport("libodbc")]
135 public static extern OdbcReturn SQLSetConnectAttr(int ConnectionHandle,
136 int Attribute, uint Value, int Length);
138 [DllImport("libodbc")]
139 public static extern OdbcReturn SQLEndTran(int HandleType, int Handle,
140 short CompletionType);
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,
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,
154 [DllImport("libodbc")]
155 public static extern OdbcReturn SQLCancel(int StatementHandle);
157 [DllImport("libodbc")]
158 public static extern OdbcReturn SQLCloseCursor(int StatementHandle);