2016-06-28 44 views
1

我想查看我日誌文件中列名的所有數據。Firebird dataReader

private static void ExecuteSQL() 
    { 

     string conn = "User ID=SYSDBA;Password=masterkey;Database=XX.18.137.XXX:C:/ER.TDB;DataSource==XX.18.137.XXX;Charset=NONE;"; 

     FbConnection myConnection = new FbConnection(conn); 
     FbDataReader myReader = null; 
     string sql = "SELECT * FROM RDB$RELATIONS"; 

     FbCommand myCommand = new FbCommand(sql, myConnection); 
     try 
     { 
      myConnection.Open(); 
      myCommand.CommandTimeout = 0; 
      myReader = myCommand.ExecuteReader(); 

      while (myReader.Read()) 
      { 
       // Log.WriteLog(myReader["rdb$relation_name"].ToString()); 

      } 
      myConnection.Close(); 
     } 
     catch (Exception e) 
     { 
      Log.WriteLog(e.ToString()); 
     } 
    } 

現在它只顯示rdb$relation_name列。

我想檢查我沒有列名稱的不同表格。

回答

3

所有你需要做的是遍歷迭代結果之前打印他們的名字各個領域:

private static void ExecuteSQL() 
{ 

    string conn = "User ID=SYSDBA;Password=masterkey;Database=XX.18.137.XXX:C:/ER.TDB;DataSource==XX.18.137.XXX;Charset=NONE;"; 

    FbConnection myConnection = new FbConnection(conn); 
    FbDataReader myReader = null; 
    string sql = "SELECT * FROM RDB$RELATIONS"; 

    FbCommand myCommand = new FbCommand(sql, myConnection); 
    try 
    { 
     myConnection.Open(); 
     myCommand.CommandTimeout = 0; 
     myReader = myCommand.ExecuteReader(); 

     // 1. print all field names 
     for (int i = 0; i < myReader.FieldCount; i++) 
     { 
      Log.WriteLog(myReader.GetName(i)); 
     } 

     // 2. print each record 
     while (myReader.Read()) 
     { 
      // 3. for each record, print every field value 
      for (int i = 0; i < myReader.FieldCount; i++) 
      { 
      Log.WriteLog(myReader[i].ToString()); 
      } 

     } 
     myConnection.Close(); 
    } 
    catch (Exception e) 
    { 
     Log.WriteLog(e.ToString()); 
    } 
} 

我敢肯定,認爲它打印每一個輸出到一個新的生產線,這將給予醜陋的輸出。您應該可以更改此設置以按行打印字段和每條記錄。

+0

感謝你的幫助,它爲我工作。一行數據的工作。對於多行l改變了我的寫法。可以了,好了。 – user6363065

0
public static List<string> GetColumnNames(string queryString) 
    { 
     string result = string.Empty; 
     List<string> listOfColumns = new List<string>(); 

     try 
     { 
      using (FbConnection conn = new FbConnection(connString)) 
      { 
       conn.Open(); 

       using (FbCommand cmd = new FbCommand(queryString, conn)) 
       { 
        // Call Read before accessing data. 
        FbDataReader reader = cmd.ExecuteReader(); 

        if (reader.FieldCount > 0) 
        { 
         for (int i = 0; i < reader.FieldCount; i++) 
         { 
          listOfColumns.Add(reader.GetName(i)); 
         } 
        } 
       } 
      } 
     } 

     catch (Exception e) 
     { 
      BinwatchLogging.Log(e); 
     } 

     return listOfColumns; 

     // return result; 
    } 

哪裏查詢字符串爲您查詢(例如:從yourtablename選擇*)和CONNSTRING是您的火鳥的ConnectionString

+0

,或者你可以直接在dataadapter上執行並填充數據集,它將同時包含columnNames和data –