由SqlDataReader读出的一个数据行,怎样逐一将各字段转化成字符串?——————下面的代码 错在那里?----------------------------------------------                SqlDataReader sdr = cmd.ExecuteReader();
                while (sdr.Read())
                {
                    foreach (object o in sdr)
                    {
                        if (o != null)
                            s += (string)o;      //s是前面已经定义的 string
                    } 
                }
--------------------------------------------------------------------

解决方案 »

  1.   

    SqlDataReader sdr = cmd.ExecuteReader();要抱错也是这个地方吧?
      

  2.   

    如果你用的是WinForm,把變量s定議成全局變量:
    public string s;
      

  3.   

    public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
    {
    ///定义DataTable和模式
    DataTable datatable = new DataTable();
    DataTable schemaTable = dataReader.GetSchemaTable();

    try
    { ///动态添加表的数据列
    foreach(DataRow myRow in schemaTable.Rows)
    {
    DataColumn myDataColumn = new DataColumn();
    myDataColumn.DataType = myRow.GetType();
    myDataColumn.ColumnName = myRow[0].ToString();
    datatable.Columns.Add(myDataColumn);
    }

    ///添加表的数据
    while(dataReader.Read())
    {
    DataRow myDataRow = datatable.NewRow();
    for(int i=0;i<schemaTable.Rows.Count;i++)
    {
    myDataRow[i] = dataReader[i].ToString();
    }
    datatable.Rows.Add(myDataRow);
    myDataRow = null;
    }
    schemaTable = null;

    ///关闭数据读取器
    dataReader.Close();
    return datatable;
    }
    catch(Exception ex)
    {
    ///抛出类型转换错误
    SystemError.SystemLog(ex.Message);
    throw new Exception(ex.Message,ex);
    }
    }
      

  4.   

    LZ的问题出在哪?怎么我一直说“阅读器关闭时READ无效”?我的READER没有关啊
      

  5.   

    可以利用DataReader的FieldCount属性            
                    SqlDataReader sdr = cmd.ExecuteReader();
                    while (sdr.Read())
                    {
                        for (int i = 0; i < sdr.FieldCount; i++)
                        {
                            s += sdr.GetValue(i).ToString(); //s是前面已经定义的 string
                        } 
                    }