Друзья, я не знаю c# настолько глубоко, поэтому вынужден обратиться за помощью.
Использую чужой класс который мне не понятен, но мне нужен это функционал.
При выборке данных их sqlite применяется
public DataTable ExecuteQuery(string query)
{
if (!IsConnectionOpen)
{
throw new SqliteException("SQLite database is not open.");
}
IntPtr stmHandle = Prepare(query);
int columnCount = sqlite3_column_count(stmHandle);
var dataTable = new DataTable();
for (int i = 0; i < columnCount; i++)
{
string columnName = Marshal.PtrToStringAnsi(sqlite3_column_name(stmHandle, i));
dataTable.Columns.Add(columnName);
}
//populate datatable
while (sqlite3_step(stmHandle) == SQLITE_ROW)
{
object[] row = new object[columnCount];
for (int i = 0; i < columnCount; i++)
{
switch (sqlite3_column_type(stmHandle, i))
{
case SQLITE_INTEGER:
row[i] = sqlite3_column_int(stmHandle, i);
break;
case SQLITE_TEXT:
IntPtr text = sqlite3_column_text(stmHandle, i);
row[i] = Marshal.PtrToStringAnsi(text);
break;
case SQLITE_FLOAT:
row[i] = sqlite3_column_double(stmHandle, i);
break;
case SQLITE_NULL:
row[i] = null;
break;
}
}
dataTable.AddRow(row);
}
Finalize(stmHandle);
return dataTable;
}
Далее привожу код DataTable и DataRow
public class DataRow : Dictionary<string, object>
{
public new object this[string column]
{
get
{
if (ContainsKey(column))
{
return base[column];
}
return null;
}
set
{
if (ContainsKey(column))
{
base[column] = value;
}
else
{
Add(column, value);
}
}
}
}
public class DataTable
{
public DataTable()
{
Columns = new List<string>();
Rows = new List<DataRow>();
}
public List<string> Columns { get; set; }
public List<DataRow> Rows { get; set; }
public DataRow this[int row]
{
get
{
return Rows[row];
}
}
public void AddRow(object[] values)
{
if (values.Length != Columns.Count)
{
throw new IndexOutOfRangeException("The number of values in the row must match the number of column");
}
var row = new DataRow();
for (int i = 0; i < values.Length; i++)
{
row[Columns[i]] = values[i];
}
Rows.Add(row);
}
}
Как мне в цикле получить все данные из
DataTable?
Если по строкам то могу так dataTable.[0]["db_field_index"]
Но как в массиве все данные получить?