Для взаимодействия с базой данных виджет использует класс Site-Search, с помощью которого производится запрос к базе данных, и по¬лученные результаты преобразуются в строку формата JSON. Этот класс имеет одно приватное поле _conString, в котором будет хранить¬ся строка соединения с сервером баз данных MS SQL. Сама строка со¬единения будет передаваться конструктору класса:
private string _conString;
public SiteSearch(string connectionString)
conString = connectionString;
Как видите, конструктор класса чрезвычайно прост. Он лишь записы¬вает значение аргумента connectionString в приватное поле _conString. Как вы уже наверняка догадались, класс будет содержать единствен¬ный метод - метод Search(), который составляет суть класса.Метод Sea rch () принимает единственный аргумент - строку с ис фразой. На ее основе с помощью метода String. Format() констру ся текст запроса SQL:
public string Search (string searchString) {
string query = String.ForraatC'SELECT TOP 10 id, title FROM BlogP WHERE posting LIKE"'«{0,r OR title LIKE '%{0}%' ORDER BY date! searchString); •
Теперь в переменной query находится окончательный текст SQI са, который и будет выбирать данные из таблицы чуть ниже в: методе.
Библиотека JSON для языка С# позволяет динамически сс строки в формате JSON. Для создания таких строк использу» класса: JSONArray и JSONObject. Как вы наверняка уже догадались,! JSONArray создает массив, a JSONObject - объект. В соответствии с< нием структуры возвращаемых данных, клиент ожидает пол} сив объектов. Таким образом, следующий наш шаг заключается] дании экземпляра класса JSONArray:
Nii.JSON.JSONArray jsa - new Nii. JSON. JSONArrayO;
На данный момент это единственная строка кода, которая таж! иначе связана с форматом JSON. В следующий раз мы вернемся J лиотеке JSON при выполнении операций с базой данных.
Далее необходимо создать соединение с базой данных и SqlCommanc' using (SqlConnection conn = new SqlConnection(_conString))
SqiCommand command = new SqlCommand(query, conn);
conn.0pen(); \ Ж,У^„ ':Ш Ж:Ж~Ш:ШЯ'*М
Этот фрагмент кода создает дескриптор соединения с базой да основе строки _conString. Затем создается новый экземпляр клас Command, которому передаются строка SQL-запроса и дескриптор < нения. По сути здесь выполняется подготовка к исполнению Собственно исполнение запроса иллюстрируется в следующих <
using (SqlDataReader dataReader = command.ExecuteReaderO)
В этом фрагменте кода посредством метода ExecuteReader создав земпляр класса SqlDataReader. Этот объект предоставляет возмог чтения данных, полученных в результате исполнения запроса ; данных. Прежде чем приступить к чтению данных, необходимо! диться, что результирующий набор данных содержит хотя бы строку. Такую проверку можно выполнить с помощью свойства (
using (SqlDataReader dataReader = command. ExecuteReaderO) {
if (dataReader.HasRows) int i = 0;
while (reader.ReadO)
}
catch {},
}
В этом фрагменте кода с помощью свойства HasRows проверяется нали¬чие хотя бы одной записи в наборе данных, полученном в результате исполнения запроса. Если набор не пустой, можно начинать обработку полученных данных.
Чтение данных производится в цикле while с помощью метода Read() класса SqlDataReader. Если достигнут конец набора данных, метод воз¬вращает значение false, и происходит выход из цикла. В теле цикла всякий раз создается новый объект класса JSONObject, и его свойства с помощью метода put() заполняются данными, полученными из базы данных. Метод put() класса JSONObject принимает два аргумента-строку с именем свойства и значение свойства. Для извлечения дан¬ных из конкретного столбца в наборе объекту dataReader передается имя этого столбца в виде индекса:
using (SqlDataReader dataReader = command.ExecuteReaderO) {
try {
if (dataReader.HasRows) {
int i = 0;
while (dataReader.ReadO) <
JSONObject jso = new JSONObjectO;
jso.put("title", dataReader["title"]); jso.put("id", dataReader["id"]);
jsa.put(i++,jso);
,:':"'""ABi'*;*Ki:s"T"
}
catch {}
}
Заполнив свойства объекта JSONObject, его необходимо добавить в ра¬нее созданный клас JSONArray. Для этих целей JSONArray предоставляет метод put(), но он принимает несколько иные аргументы, в отличие от метода put() класса JSONObject. В первом аргументе передается индекс элемента массива, а во втором - объект JSONObject.
По выходе из цикла JSONArray будет заполнен и готов к передаче i ту. Но что делать, если запрос к базе данных вернет пустой набор? I граммная часть на стороне клиента предусматривает такую ность. В случае, если результирующий набор данных не содер одной строки, клиенту будет передан пустой массив. Клиентская' приложения обнаружит это и выполнит все необходимые действе».
К настоящему моменту конструирование строки в формате JSON j но считать законченным. Для того чтобы передать ее клиенту,; димо воспользоваться методом ToString():
return jsa.ToStringO;
Это последняя строка в методе Search(). Она возвращает строку mi мате JSON, которая будет отправлена клиенту.
Купить правовую программу консультант плюс в Москве . Предлагаем качественный кислородный коктейль для детей. . изготовление и продажа сэндвич панелей