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 : ushort {
25 internal enum OdbcReturn : short {
35 internal enum OdbcEnv : ushort {
37 ConnectionPooling = 201,
41 [StructLayout(LayoutKind.Sequential)]
42 internal struct OdbcTimestamp
50 public ulong fraction;
54 // sealed internal class libodbc
55 internal class libodbc
57 [DllImport("odbc32.dll")]
58 public static extern OdbcReturn SQLAllocHandle (OdbcHandleType HandleType, IntPtr InputHandle, ref IntPtr OutputHandlePtr);
60 [DllImport("odbc32.dll")]
61 public static extern OdbcReturn SQLSetEnvAttr (IntPtr EnvHandle, OdbcEnv Attribute, IntPtr Value, int StringLength);
63 [DllImport("odbc32.dll")]
64 public static extern OdbcReturn SQLConnect (IntPtr ConnectionHandle, string ServerName, short NameLength1, string UserName, short NameLength2, string Authentication, short NameLength3);
66 [DllImport("odbc32.dll")]
67 public static extern OdbcReturn SQLDriverConnect(IntPtr ConnectionHandle, IntPtr WindowHandle, string InConnectionString, short StringLength1, string OutConnectionString, short BufferLength, ref short StringLength2Ptr, ushort DriverCompletion);
69 [DllImport("odbc32.dll")]
70 public static extern OdbcReturn SQLExecDirect (IntPtr StatementHandle, string StatementText, int TextLength);
72 [DllImport("odbc32.dll")]
73 public static extern OdbcReturn SQLRowCount (IntPtr StatementHandle, ref int RowCount);
75 [DllImport("odbc32.dll")]
76 public static extern OdbcReturn SQLNumResultCols (IntPtr StatementHandle, ref short ColumnCount);
78 [DllImport("odbc32.dll")]
79 public static extern OdbcReturn SQLFetch (IntPtr StatementHandle);
81 [DllImport("odbc32.dll")]
82 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref bool TargetPtr, int BufferLen, ref int Len);
84 [DllImport("odbc32.dll")]
85 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref double TargetPtr, int BufferLen, ref int Len);
87 [DllImport("odbc32.dll")]
88 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref long TargetPtr, int BufferLen, ref int Len);
90 [DllImport("odbc32.dll")]
91 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref short TargetPtr, int BufferLen, ref int Len);
93 [DllImport("odbc32.dll")]
94 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref float TargetPtr, int BufferLen, ref int Len);
96 [DllImport("odbc32.dll")]
97 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref OdbcTimestamp TargetPtr, int BufferLen, ref int Len);
99 [DllImport("odbc32.dll")]
100 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, ref int TargetPtr, int BufferLen, ref int Len);
102 [DllImport("odbc32.dll")]
103 public static extern OdbcReturn SQLGetData (IntPtr StatementHandle, ushort ColumnNumber, OdbcType TargetType, byte[] TargetPtr, int BufferLen, ref int Len);
105 [DllImport("odbc32.dll")]
106 public static extern OdbcReturn SQLDescribeCol(IntPtr StatementHandle, ushort ColumnNumber, byte[] ColumnName, short BufferLength, ref short NameLength, ref short DataType, ref short ColumnSize, ref short DecimalDigits, ref short Nullable);
108 [DllImport("odbc32.dll")]
109 public static extern OdbcReturn SQLFreeHandle(ushort HandleType, IntPtr SqlHandle);
111 [DllImport("odbc32.dll")]
112 public static extern OdbcReturn SQLDisconnect(IntPtr ConnectionHandle);
114 [DllImport("odbc32.dll")]
115 public static extern OdbcReturn SQLPrepare(IntPtr StatementHandle, string Statement, int TextLength);
117 [DllImport("odbc32.dll")]
118 public static extern OdbcReturn SQLExecute(IntPtr StatementHandle);
120 [DllImport("odbc32.dll")]
121 public static extern OdbcReturn SQLSetConnectAttr(IntPtr ConnectionHandle, int Attribute, uint Value, int Length);
123 [DllImport("odbc32.dll")]
124 public static extern OdbcReturn SQLEndTran(int HandleType, IntPtr Handle, short CompletionType);
126 [DllImport("odbc32.dll")]
127 public static extern OdbcReturn SQLBindParam(IntPtr StatementHandle, short ParamNum, short ValueType,
128 short ParamType, int LenPrecision, short ParamScale, ref int ParamValue, int StrLen);
130 [DllImport("odbc32.dll")]
131 public static extern OdbcReturn SQLBindParam(IntPtr StatementHandle, short ParamNum, short ValueType,
132 short ParamType, int LenPrecision, short ParamScale, byte[] ParamValue, int StrLen);
134 [DllImport("odbc32.dll")]
135 public static extern OdbcReturn SQLCancel(IntPtr StatementHandle);
137 [DllImport("odbc32.dll")]
138 public static extern OdbcReturn SQLCloseCursor(IntPtr StatementHandle);