2012-07-30 66 views

回答

1

您可以使用GenericDatabaseStorage<T>类,该类可以使用任何ADO.NET IDBConnection类型。以下是FileHelpers source的示例。

[TestClass] 
public class GenericDatabaseStorageTests 
{ 
    [TestMethod] 
    public void CurrencyOracleExtractToFile() 
    { 
     GenericDatabaseStorage<OracleConnection, OracleCommand> storage = 
      new GenericDatabaseStorage<OracleConnection, OracleCommand>( 
       typeof(TestRecord), 
       "User Id=SHELL;Password=shell;Data Source=ora9dev" 
      ); 

     storage.SelectSql = "SELECT * FROM CURRENCY"; 
     storage.FillRecordCallback = new FillRecordHandler(FillRecordOrder); 

     FileDataLink.EasyExtractToFile(storage, "tempord.txt"); 

     FileDataLink link = new FileDataLink(storage); 
     link.ExtractToFile("tempord.txt"); 

     TestRecord[] res = (TestRecord[])CommonEngine.ReadFile(typeof(TestRecord), "tempord.txt"); 

     if (File.Exists("tempord.txt")) 
      File.Delete("tempord.txt"); 

     Assert.AreEqual(3, res.Length); 

     Assert.AreEqual("AED", res[ 0 ].CurrencyCode); 
     Assert.AreEqual("AFA", res[ 1 ].CurrencyCode); 
     Assert.AreEqual("ALL", res[ 2 ].CurrencyCode); 
    } 

    public void FillRecordOrder(object rec, object[ ] fields) 
    { 
     TestRecord record = (TestRecord)rec; 

     record.CurrencyCode = (string)fields[ 0 ]; 
     record.Name = (string)fields[ 1 ]; 
    } 
} 
+0

哦,这是伟大的。感谢很多。有没有办法将相应的列名也与数据一起到文件..? – user1046415 2012-07-31 13:29:24

+0

您可以将'engine.HeaderText'设置为[在其他地方回答](http://stackoverflow.com/a/8258420/1077279)。 – shamp00 2012-07-31 15:10:26