internal string GetLiteralInfo(int literal) { using (IDBInfoWrapper wrapper = this.IDBInfo()) { OleDbHResult result; System.Data.Common.UnsafeNativeMethods.IDBInfo dbInfo = wrapper.Value; if (dbInfo == null) { return(null); } string str = null; IntPtr ptrZero = ADP.PtrZero; int literalCount = 0; using (new DualCoTaskMem(dbInfo, new int[] { literal }, out literalCount, out ptrZero, out result)) { if (OleDbHResult.DB_E_ERRORSOCCURRED != result) { if ((1 == literalCount) && (Marshal.ReadInt32(ptrZero, ODB.OffsetOf_tagDBLITERALINFO_it) == literal)) { str = Marshal.PtrToStringUni(Marshal.ReadIntPtr(ptrZero, 0)); } if (result < OleDbHResult.S_OK) { this.ProcessResults(result); } } else { SafeNativeMethods.Wrapper.ClearErrorInfo(); } } return(str); } }
internal bool AddInfoKeywordsToTable(DataTable table, DataColumn keyword) { using (IDBInfoWrapper wrapper = this.IDBInfo()) { string str; System.Data.Common.UnsafeNativeMethods.IDBInfo info = wrapper.Value; if (info == null) { return(false); } Bid.Trace("<oledb.IDBInfo.GetKeywords|API|OLEDB> %d#\n", base.ObjectID); OleDbHResult keywords = info.GetKeywords(out str); Bid.Trace("<oledb.IDBInfo.GetKeywords|API|OLEDB|RET> %08X{HRESULT}\n", keywords); if (keywords < OleDbHResult.S_OK) { this.ProcessResults(keywords); } if (str != null) { string[] strArray = str.Split(new char[] { ',' }); for (int i = 0; i < strArray.Length; i++) { DataRow row = table.NewRow(); row[keyword] = strArray[i]; table.Rows.Add(row); row.AcceptChanges(); } } return(true); } }
internal DataTable BuildInfoLiterals() { using (IDBInfoWrapper wrapper = this.IDBInfo()) { OleDbHResult result; System.Data.Common.UnsafeNativeMethods.IDBInfo dbInfo = wrapper.Value; if (dbInfo == null) { return(null); } DataTable table = new DataTable("DbInfoLiterals") { Locale = CultureInfo.InvariantCulture }; DataColumn column6 = new DataColumn("LiteralName", typeof(string)); DataColumn column5 = new DataColumn("LiteralValue", typeof(string)); DataColumn column4 = new DataColumn("InvalidChars", typeof(string)); DataColumn column3 = new DataColumn("InvalidStartingChars", typeof(string)); DataColumn column2 = new DataColumn("Literal", typeof(int)); DataColumn column = new DataColumn("Maxlen", typeof(int)); table.Columns.Add(column6); table.Columns.Add(column5); table.Columns.Add(column4); table.Columns.Add(column3); table.Columns.Add(column2); table.Columns.Add(column); int literalCount = 0; IntPtr ptrZero = ADP.PtrZero; using (new DualCoTaskMem(dbInfo, null, out literalCount, out ptrZero, out result)) { if (OleDbHResult.DB_E_ERRORSOCCURRED != result) { long num2 = ptrZero.ToInt64(); tagDBLITERALINFO structure = new tagDBLITERALINFO(); int num = 0; while (num < literalCount) { Marshal.PtrToStructure((IntPtr)num2, structure); DataRow row = table.NewRow(); row[column6] = ((OleDbLiteral)structure.it).ToString(); row[column5] = structure.pwszLiteralValue; row[column4] = structure.pwszInvalidChars; row[column3] = structure.pwszInvalidStartingChars; row[column2] = structure.it; row[column] = structure.cchMaxLen; table.Rows.Add(row); row.AcceptChanges(); num++; num2 += ODB.SizeOf_tagDBLITERALINFO; } if (result < OleDbHResult.S_OK) { this.ProcessResults(result); } } else { SafeNativeMethods.Wrapper.ClearErrorInfo(); } } return(table); } }