Firebird dataReader

问题描述:

我想查看我日志文件中列名的所有数据。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列。

我想检查我没有列名称的不同表格。

所有你需要做的是遍历迭代结果之前打印他们的名字各个领域:

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

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 –