public DMSqlResultSet ExecuteSql(string command) { var sql = new PCDSQLClass(); sql.SetDST(DocumentSecurityToken); sql.SetLibrary(LibraryName); int ret = sql.Execute(command); if (ret != S_OK || sql.ErrNumber != 0) { throw new DMApiException(string.Format("PCDSQL.Execute failed with SQL error {0}.", sql.GetSQLErrorCode()), sql.ErrNumber, sql.ErrDescription); } var result = new DMSqlResultSet { ColumnCount = sql.GetColumnCount(), RowCount = sql.GetRowCount(), RowsAffected = sql.GetRowsAffected() }; if (sql.ErrNumber != 0 && sql.ErrNumber != ErrNoResults) { throw new DMApiException("PCDSQL failed.", sql.ErrNumber, sql.ErrDescription); } try { for (int i = 0; i < result.ColumnCount; i++) { result.ColumnNames[i] = Convert.ToString(sql.GetColumnName(i + 1)); // hi Basic lovers :) } for (int i = 0; i < result.RowCount; i++) { var row = new DMSqlRow { Values = new object[result.ColumnCount] }; for (int j = 0; j < result.ColumnCount; j++) { row.Values[j] = sql.GetColumnValue(j + 1); // hi again... } result.Rows[i] = row; sql.NextRow(); } return(result); } finally { sql.ReleaseResults(); } }
public DMSqlResultSet() { Rows = new DMSqlRow[RowCount]; ColumnNames = new string[ColumnCount]; }