Example #1
0
        public static IEnumerable <T> ToColIterator <T>(this SqlBuilder sqlBuilder, BeanApi api,
                                                        params object[] parameters)
        {
            var query = sqlBuilder.ToSql();

            return(query.StartsWith("SELECT")
                ? api.ColIterator <T>(query, parameters)
                : throw NotAnSqlQueryException.Create());
        }
Example #2
0
        void GenericSqlQueries(BeanApi api)
        {
            /// ## Generic SQL Queries
            /// Often it's needed to execute queries which don't map to beans:
            /// aggregates, grouping, joins, selecting single column, etc.
            ///
            /// `BeanApi` provides methods for such tasks:
            ///
            {
#if CODE
                // Load multiple rows
                var rows = api.Rows(@"SELECT author, COUNT(*) 
                                      FROM book 
                                      WHERE rating > {0} 
                                      GROUP BY author", 7);

                // Load a single row
                var row = api.Row(@"SELECT author, COUNT(*) 
                                    FROM book 
                                    WHERE rating > {0}
                                    GROUP BY author 
                                    ORDER BY COUNT(*) DESC 
                                    LIMIT 1", 7);

                // Load a column
                var col = api.Col <string>("SELECT DISTINCT author FROM book ORDER BY author");

                // Load a single value
                var count = api.Cell <int>("SELECT COUNT(*) FROM book");
#endif
            }
            /// For `Rows` and `Col`, there are unbuffered (memory-optimized) counterparts:
            {
#if CODE
                foreach (var row in api.RowsIterator("SELECT..."))
                {
                    // do something
                }

                foreach (var item in api.ColIterator("SELECT..."))
                {
                    // do something
                }
#endif
            }
            /// To execute a non-query SQL command, use the `Exec` method:
#if CODE
            api.Exec("SET autocommit = 0");
#endif
            /// **NOTE:** all described functions accept parameters in the same form as [finder methods](#finding-beans-with-sql) do.
        }
Example #3
0
        void GenericSqlQueries(BeanApi api)
        {
            /// ## Generic SQL Queries
            /// Often it's needed to execute queries which don't map to beans:
            /// aggregates, grouping, joins, selecting single column, etc.
            ///
            /// `BeanApi` provides methods for such tasks:
            ///
            {
            #if CODE
                // Load multiple rows
                var rows = api.Rows(@"SELECT author, COUNT(*)
                                      FROM book
                                      WHERE rating > {0}
                                      GROUP BY author", 7);

                // Load a single row
                var row = api.Row(@"SELECT author, COUNT(*)
                                    FROM book
                                    WHERE rating > {0}
                                    GROUP BY author
                                    ORDER BY COUNT(*) DESC
                                    LIMIT 1", 7);

                // Load a column
                var col = api.Col<string>("SELECT DISTINCT author FROM book ORDER BY author");

                // Load a single value
                var count = api.Cell<int>("SELECT COUNT(*) FROM book");
            #endif
            }
            /// For `Rows` and `Col`, there are unbuffered (memory-optimized) counterparts:
            {
            #if CODE
                foreach(var row in api.RowsIterator("...")) {
                    // do something
                }

                foreach(var item in api.ColIterator("...")) {
                    // do something
                }
            #endif
            }
            /// To execute a non-query SQL command, use the `Exec` method:
            #if CODE
            api.Exec("SET autocommit = 0");
            #endif
            /// **NOTE:** all described functions accept parameters in the same form as [finder methods](#finding-beans-with-sql) do.
        }