public static DataTable Convert(_Recordset rs, out OleDbParameter[] columns) { var adapter = new OleDbDataAdapter(); var dataTable = new DataTable(); adapter.Fill(dataTable, rs); columns = new OleDbParameter[rs.Fields.Count]; var index = 0; foreach (Field field in rs.Fields) { var param = new OleDbParameter(); param.SourceColumn = field.Name; param.OleDbType = (OleDbType)field.Type; var size = field.DefinedSize; var precision = field.Precision; if (size == 0) { size = precision; } param.Size = size; param.Precision = precision; param.Scale = field.NumericScale; param.IsNullable = (field.Attributes & (int)FieldAttributeEnum.adFldIsNullable) != 0; columns[index] = param; index++; } return(dataTable); }
/// <summary> /// Another pattern that is refactored here /// Given ADODB.Recordset return a string of its xml /// </summary> /// <param name="record">The record.</param> /// <returns></returns> static internal string GetXmlFromAdoRecordset(_Recordset record) { var results = String.Empty; _Stream stream = null; try { if (null != record) { stream = new Stream(); record.Save(stream, PersistFormatEnum.adPersistXML); results = stream.ReadText(-1); } } catch (Exception ex) { LogError("GetXmlFromAdoRecordset(): Error " + ex.Message, "GetXmlFromAdoRecordset"); } finally { if (stream != null) { Marshal.ReleaseComObject(stream); } } return(results); }
// invokes a visitor argument for each row of the current result public override void for_each_row(visitor theVisitor, string select_statement) { this.check(); try { DataTable newTable = new DataTable(); System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(); _Recordset result = this.rs_open(select_statement, true); adapter.Fill(newTable, result); DataRowCollection rows_ = newTable.Rows; for (int j = 0; j < rows_.Count; j++) { theVisitor(rows_[j]); } } catch (System.Exception e) { if (e != null) { throw new Exception(e.Message); } } }
/// <summary> /// Classic ADO through Interop /// </summary> public void Example2() { // Open our Connection Connection conn = new Connection(); conn.Open("Provider=SQLOLEDB;Server=localhost;" + "Database=ADONET", "someuser", "", 0); // Query the database Command cmd = new Command(); cmd.ActiveConnection = conn; cmd.CommandText = "SELECT * FROM CUSTOMER"; object recaffected = null; object prms = new object(); _Recordset rs = cmd.Execute(out recaffected, ref prms, 0); // Dump all the records to the standard output while (!rs.EOF) { for (int x = 0; x < rs.Fields.Count; x++) { Console.Write(rs.Fields[x].Value.ToString() + ":"); } Console.WriteLine(""); // Endline rs.MoveNext(); } // Clean up conn.Close(); }
private List <Gidy> listaWybranychGid(string nazwaListy, Procedures procId) { List <Gidy> listaGID = new List <Gidy>(); int listaId = GetWindow().AllChildren[nazwaListy].Id; _Recordset recordset = Runtime.WindowController.GetQueueMarked((int)procId, listaId, GetCallbackThread()); try { //jesli nie jest nic zaznaczone to recordset == null if (recordset != null && recordset.RecordCount > 0) { string fieldName; recordset.MoveFirst(); while (recordset.EOF == false) { ADODB.Fields fields = recordset.Fields; Gidy g = new Gidy(); for (int i = 0; i < fields.Count; i++) { fieldName = fields[i].Name; if (fieldName == "TYP") { g.GIDTyp = fields[i].Value.ToString(); } if (fieldName == "FIRMA") { g.GIDFirma = fields[i].Value.ToString(); } if (fieldName == "NUMER") { g.GIDNumer = fields[i].Value.ToString(); } if (fieldName == "LP") { g.GIDLp = fields[i].Value.ToString(); } } listaGID.Add(g); recordset.MoveNext(); } } } catch (Exception e) { throw new Exception(e.Message); } return(listaGID); }
public static void WriteRows(_Recordset recordset, int maxRowCount, TextWriter writer) { var recordCount = recordset.RecordCount; writer.WriteLine("RecordCount: " + recordCount); if (!recordset.EOF) { var rsStr = recordset.GetString(StringFormatEnum.adClipString, maxRowCount, "\t", "\r\n", "<NULL>"); writer.WriteLine(rsStr); } }
/// <summary> /// returns recordset for stored procedure executed /// </summary> public _Recordset exec_for_recordset(string statement, bool disconnect) { statement = statement.ToLower(); if (statement.IndexOf("exec") == -1) { throw new Exception("Invalid SQL query"); } _Recordset result = this.rs_open(statement, disconnect); return(result); }
public static void WriteSchema(_Recordset rs, TextWriter writer) { var index = 1; var d = (double)rs.Fields.Count; d = Math.Log10(d); var colWidth = (int)d; colWidth++; foreach (Field field in rs.Fields) { var fieldType = field.Type; var line = StringHelper.FormatColumn(index.ToString(), colWidth, false) + ". " + StringHelper.FormatColumn(field.Name, 30, false); var fileTypeStr = Enum.Format(fieldType.GetType(), field.Type, "g"); switch (fieldType) { case DataTypeEnum.adNumeric: fileTypeStr += "(" + field.Precision + "," + field.NumericScale + ")"; break; case DataTypeEnum.adVarChar: fileTypeStr += "(" + field.DefinedSize + ")"; break; default: break; } if ((field.Attributes & (int)FieldAttributeEnum.adFldMayBeNull) != 0) { fileTypeStr += " NULL"; } else { fileTypeStr += " NOT NULL"; } line += StringHelper.FormatColumn(fileTypeStr, 30, false); writer.WriteLine(line); index++; } }
public void close_recordset(_Recordset result) { result.Close(); }