Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
egr 19.11.2004 13:30
1. Парсер, реально это набор удобных оберток над многими более низкоуровневыми абстракциями, вроде соединений с БД и выполнении определенных типов запросов, вроде прокрутки двумерных массивов (таблиц) и пр.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = "..."; OleDbCommand command = new OleDbCommand("UPDATE ...", conn); conn.Open(); command.ExecuteNonQuery(); conn.Close();В парсере же:
^connect[ConnectionString]{ ^void:sql{ UPDATE ... } }С запросами возвращающими данные в C#, ещё сложнее, - нужно задействовать другие, весьма непростые для новичков абстракции вроде DataReader, DataSet, DataAdapter и т.д. В парсере же все проще. Например получение данных в двумерный массив (таблицу) с которым потом можно просто работать, выглядит так:
^connect[ConnectionString]{ $table[^table::sql{ SELECT col1, col2, ... FROM table }] }и далее таблицу можно прокручивать, выбирая при этом нужные столбцы, а так же делать другие вещи. Например прокутка выглядит так:
^table.menu{ $table.col1 $table.col2<br/> }и в сравнении с C# в котором, скажем прокрутка какого-нибудь ArrayList выглядит так:
ArrayList array = <init code>; IEnumerator enum = array.GetEnumerator(); while (enum.MoveNext()) { ... enum.Current ... }т.е. приходится задействовать достаточно сложные для новичков абстракции типа интерфейсов. С другими типами многомерных структур там ещё сложнее, я не говорю уже про C++ и прочие.