A very basic QueryForDataTable might look like this:
// untested
public static DataTable QueryForDataTable(this ISqlMapper sqlMapper, string
statement, object parameter)
{
var dataTableRowDelegate = new QueryWithRowDelegateDataTable();
sqlMapper.QueryWithRowDelegate(statement, parameter,
dataTableRowDelegate.RowDelegate);
return dataTableRowDelegate.DataTable;
}
// untested
public class QueryWithRowDelegateDataTable
{
private readonly DataTable _dataTable = new DataTable();
private bool _firstRow = true;
public void RowDelegate(object obj, object parameterObject, IList unused)
{
object[] items = (object[])obj;
if (_firstRow)
{
for (int i = 0; i < items.Length; i++)
{
_dataTable.Columns.Add("DataColumn" + i, items[i].GetType());
}
_firstRow = false;
}
_dataTable.Rows.Add(items);
}
public DataTable DataTable
{
get { return _dataTable; }
}
}
To get the DataTable's column names to match the names of the database column
you'd need to hook into MappedStatement.
________________________________
From: Michael McCurrey <[email protected]>
To: [email protected]
Sent: Monday, June 22, 2009 9:28:48 AM
Subject: Next Release
Ok folks,
I'd like to plan the next release of iBatis and would like to know "What do you
want?" I would like to make a few small releases to bridge the 1.X line & the
existing 3.X line due to the number of breaking changes in the 3.X line. Some
things I want to do for 'just me' are:
1. Feature match the Java version
2. Fix an annoying list non lazy load bug
3. Rev to my Castle.DynamicProxy2 patch
4. Expose a QueryForDataTable
5. Drop .net 1.X compatibility.
6. Lastly, I would like something ambitious like Orin's Binsor for Castle on
the configuration front.
--
Michael