>// Read a DBF into a .NET datatable >METHOD DbfToDataTable(oDbf AS VO.DbServer) AS DataTable > VAR oDT := DataTable{oDbf:Alias:ToString()} > LOCAL oRow AS DataRow > FOR VAR i := 1 TO oDbf:FCount > oDT:Columns:Add(DataColumn{oDbf:FieldName(i):ToString()}) > NEXT > oDbf:GoTop() > WHILE !oDbf:EoF > oRow := oDT:NewRow() > // Read each column into the row > FOR VAR i := 1 TO oDbf:FCount > oRow[oDbf:FieldName(i):ToString()] := oDbf:FieldGet(i):ToString() > NEXT > // Add the row to the datatable > oDT:Rows:Add(oRow) > oDbf:Skip() > ENDDO >RETURN oDT >>
>STATIC METHOD DataRead(sDB AS STRING, sComm AS STRING) AS DataTable > LOCAL oConn AS DbConnection > LOCAL oComm AS DbCommand > LOCAL oTran AS DbTransaction > LOCAL oRead AS DbDataReader > LOCAL oDT AS DataTable > > oConn := SqlUtils.GetConnection(sDB) > oConn:Open() > oComm := DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[sDB]:ProviderName):CreateCommand() > oComm:Connection := oConn > oComm:CommandText := sComm > oTran := oConn:BeginTransaction() > oComm:Transaction := oTran > oRead := oComm:ExecuteReader() > oDT := DataTable{} > oDT:Load(oRead) > oConn:Close() > oConn:Dispose() >RETURN oDT >