public override object GetDataObject(DataLinkParams dlp) { DbCommand command = CreateCommand(dlp); if (command == null) { return(null); } using (command) { try { var stmt = SQLite3.Prepare2(command.Connection.Handle, command.CommandText); using (stmt) { // setup parameters BindParameters(stmt, command); // build Recordset object Recordset result = new Recordset(); // create columns GetColumns(stmt, out result.Names, out result.Types); for (int i = 0; i < result.Names.Length; i++) { result.AddColumn(); } // fill recordset object[] values = new object[result.Names.Length]; while (SQLite3.Step(stmt) == SQLite3.Result.Row && (dlp.MaxRecords <= 0 || result.Count < dlp.MaxRecords)) { for (int i = 0; i < result.Names.Length; i++) { values[i] = ReadCol(stmt, i, SQLite3.ColumnType(stmt, i)); } result.Add(values); } return(result); } } catch { return(null); } } }