Aby poprawić wydajność, chcę przekonwertować datatable na datareader. Nie mogę tego zrobić przez zapytanie. Czy jest jakiś inny sposób na zrobienie tego?Konwertuj datatable na datareader
11
A
Odpowiedz
30
wiem, że to jest stary, ale tutaj odpowiedzi wydaje się, że brakowało punkt pytanie OPS.
DataTables mają metodę o nazwie CreateDataReader, która pozwoli konwertować DataTable na obiekt DbDataReader. W tym przypadku jest to DataTableReader.
DataTable table = new DataTable();
//Fill table with data
//table = YourGetDataMethod();
DataTableReader reader = table.CreateDataReader();
Muszę zaznaczyć, że nie zwiększy to wydajności, ponieważ powinno się używać jednego z nich.
Oto kilka zasobów w tej sprawie:
2
np
public DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
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;
return datatable;
}
catch(Exception ex)
{
Error.Log(ex.ToString());
return datatable;
}
}
0
public DataTable GetTable(IDataReader _reader)
{
DataTable dataTable1 = _reader.GetSchemaTable();
DataTable dataTable2 = new DataTable();
string[] arrayList = new string[dataTable1.Rows.Count];
for (int i = 0; i < dataTable1.Rows.Count; i++)
{
DataColumn dataColumn = new DataColumn();
if (!dataTable2.Columns.Contains(dataTable1.Rows[i][ "ColumnName "].ToString()))
{
dataColumn.ColumnName = dataTable1.Rows[i][ "ColumnName "].ToString();
dataColumn.Unique = Convert.ToBoolean(dataTable1.Rows[i][ "IsUnique "]);
dataColumn.AllowDBNull = Convert.ToBoolean(dataTable1.Rows[i][ "AllowDBNull "]);
dataColumn.ReadOnly = Convert.ToBoolean(dataTable1.Rows[i][ "IsReadOnly "]);
dataColumn.DataType = (Type)dataTable1.Rows[i][ "DataType "];
arrayList[i] =dataColumn.ColumnName;
dataTable2.Columns.Add(dataColumn);
}
}
dataTable2.BeginLoadData();
while (_reader.Read())
{
DataRow dataRow = dataTable2.NewRow();
for (int j = 0; j < arrayList.Length ; j++)
{
dataRow[arrayList[j]] = _reader[arrayList[j]];
}
dataTable2.Rows.Add(dataRow);
}
_reader.Close();
dataTable2.EndLoadData();
return dataTable2;
}
+0
FYI, DataTable.Loan (DataReader) robi to i wiele więcej. Szczególnie, gdy czytelnik został stworzony za pomocą KeyInfo. – AMissico
0
Zastosowanie DataTable konstruktor,
DataTable table = new DataTable();
//Fill table with data
DataTableReader reader = new DataTableReader(table);
szansą!
Powiązane problemy
- 1. Konwertuj IEnumerable na DataTable
- 2. Konwertuj DataTable na strumień CSV
- 3. Konwertuj DataTable na ogólną listę?
- 4. Dlaczego DataTable jest szybsze niż DataReader
- 5. Konwertuj DataTable na IEnumerable <T>
- 6. Konwertuj dane CSV na DataTable w VB.net
- 7. Konwertuj wybierz nowy do DataTable?
- 8. Jak przekonwertować DataTable na IDatareader?
- 9. Jak spętać Datareader i utworzyć DataTable w Powershell
- 10. Konwertuj DbContext na Datatable w Code first entity framework
- 11. Konwertuj i używaj DataTable w WPF DataGrid?
- 12. Przesyłanie ogólnych datatable do wpisywalnych datatable
- 13. Jak przekonwertować DataSet a na DataReader?
- 14. Jak działa DataReader?
- 15. ADO.Net DataReader timeout issue
- 16. nawrócony dataReader do słownika
- 17. Jak przenieść wiersz DataTable na pierwszą pozycję jego DataTable
- 18. Jak uzyskać datatable w wyniku procedury przechowywanej
- 19. Jak przekonwertować IQueryable na DataTable
- 20. Primefaces: ustaw stronę na datatable
- 21. jak zmienić język na DataTable
- 22. wykonać kwerendę sql na DataTable
- 23. Konwertuj NA na poziom czynnika
- 24. Jak przekonwertować wynik Datareader z DbType.Time na obiekt Timespan?
- 25. Konwertuj CSS na HTML
- 26. Konwertuj obraz na XAML?
- 27. Konwertuj System.Windows.Media.Pen na System.Drawing.Pen
- 28. Konwertuj ciąg na LatLng
- 29. Konwertuj BytesIO na Plik
- 30. Konwertuj tablicę na JSON
Chcę przekonwertować datatable na datareader. – user1049021