2016-06-28 4 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

여러분의 도움에 감사드립니다 귀하의 파이어 ConnectionString을, 나에게 그것의 작품입니다. 한 행에 대한 데이터 작업. 여러 라인에 대한 내가 writelog 방법을 변경했습니다. 모든 설정. – 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 SELECT * FROM)와 connstring는

+0

또는 직접 dataadapter 및 fill 데이터 세트에서 실행할 수 있습니다. 둘 모두 columnNames와 data입니다. –