Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 133

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 260 >> Следующая

SELECT CustomerlD, ¦ . Contact Name, Phone, City, Country
FROM Customers WHERE Country = 'USA' AND City о "Seattle1
Метод Select объекта ShttaTabh позволяет искать ряды по похожим критериям. Предположим, вы выбрали все содержимое таблицы Customers в объектDataTable,. Тогда для поиска клиентов из США. но не из Сиэтла, можно воспользоваться критерием из приведенного выше запроса:
Visual Basic MET
Dim strConn, strSQL As String
strConn = "Provider=SQLOLEDB;Data Source=(local)\NetSDK;" & _ "Initial Catalog=Northwind;Trusted_Connection=Yes;"
strSQL = "SELECT CustomerlD, CompanyName, ContactName, " & _
"Phone, City, Country FROM Customers" 'Dim da As New 01eDbDataAdapter<strS0L, strConn) Dim Ш As New DataTable{) da.Fill(tbl)
Dim aRows As DatafiowO
Dim row As DataRow
aRows = tbl,Select("Country = 'USA' AND City о 'Seattle'") IFor Each row In aRows
Console.Writeline(row("CompanyName") ¦ " " & row("City") 4 _ " - " &row{"Country"))
Next row
Visual C# .NET
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDk;" + "Initial Catalog=Northwind; Trusted_Connection=Yes;";
strSQL = "SELECT CustomerlD, CompanyName, ContactName, " +
"Phone, City, Country FROM Customers"; OleDbDataAdapter da = new 01eDbDataA0apter(strSQL, strConn); DataTable tbl = new DataTableO; da.Fill(tbl);
DataRow[] aRows = tbl.Select("Country USA' AND City О 'Seattle'");
foreach (DataRow row in aRows)
ГЛАВА 8 Сортировка, поиск, фильтрация
293
Console. KriteLine* row["Co(np?nyName"] + - + rowpCity"] + " - " + row["Country"]);
Поиск по шаблону
AttO.N'r.T позволяет искать ряды по шаблону. Следующий SQL-запрос возвращает список клиентов, значение поля CuscojiktID которых начинается с буквы Л.
SELECT CustomerlD, CompanyName, Contactee, Phone FROM Customers WHERE CustomerlD LIKE 'AC
В начало или конец строки поиска можно добавлять символы шаблона % и *. Тгк, этот запрос возвращает список клиентов из Иып-Х.-лчтиира (New Hampshire), Нью-Джерси (New Jersey), Нью-Мехико (New Mexico) и Нью-Йорка (New York):
strFilter = "State LIKE Ne* f
Следующий запрос вернет список клиентов из Северной и Южной Дакоты (Dakota):
strFilter = "State LIKE i п,^на ¦
Односимвольные шаблоны типа ? и _ в ADO.NET не допускаются.
Использование символов-разделителей
Вы, возможно, заметили, что и в примере с запросом к БД, и в примере с методом указан критерий для столбцов со строковыми типами данных. В каждом случае мы заключали искомое значение в одиночные кавычки. Описание этого процесса кажется весьма простым, но вполне может создать трудности программистам.
Нельзя просто взять и заключить в критерии поиска строку в одиночные кавычки. вообще-то это допустимо, но не рекомендуется. Предположим, ваше приложение позволяет искать сотрудников по фамилиям и пользователь ввел фамилию Если заключить в критерии поиска литеральное значение в одиночные кавычки, критерий будет выглядеть так:
LastName = 'O'Malley'
Тем не менее, если в искомом значении уже присутствует символ-разделитель,
его необходимо продублировать. В нашем случае критерий поиска будет таким:
LastName =0" Valley
Если вы создаете критерий поиска динамически, обязательно проверьте мое значение на наличие символов-разделителей. В этом случае вам пригодится
метод Replace класса String. Следующий фрагмент кода создает строку поиска для
метода Select и с помощью метода Replace класса String заменяет каждую одиночную кавычку в этой строке двумя такими кавычками:
Visual Basic .NET
utrCriteria = "LastName = & strLastName. Replace*.....,......) &

294
Часть III Автономная работа с данными: объект DalaSet модели ADO.NET
Visual С# .НЕТ
strCriteria = "LastName = + strLastName, Replace!.......) +.....;
А как указать в критерии поиска дату? Заключите ее в символы как показано ниже (к счастью, на символы-разделители датах можно не обращать внимания).
strCriteria = "Order-Date >= »31/01/2002« AND OrderDate < «02/01/2002»"
Иногда требуется заключить в стнюлы-раздел iitwn? имена столбцов, используемые в критерии поиска, — например, когда имя содержит пробел или другой символ, не относящийся к алфавитно-цифровым, или похоже на зарезервированное слово типа ¦.' или SUM. Гак, если имя вашего столбца — Space In Name и вам требуется выбрать все записи, значение поля Space In Name которых равно 3, воспользуйтесь следующим критерием поиска:
strCriteria = "[Space In Name] =
А что. если имя столбца включает символ-разделитель? Поставьте в критерии поиска перед закрывающим символом-разделителем символ
Например, если имя вашего столбца - BadJColumnfNamevi вам требуется выбрать все записи, значение поля BadjCoiunitiiNnnu которых равно 5, используйте такую строку поиска:
Visual Basic .NET
strCriteria = "[,Bai.r\]Column[Name.l = 5"
Visual C# .NET
strCriteria = "[Bad\\]Co]uinn[MameJ = 5";
Примечание Помните, что в С* символ \ является управляющим. В предыдущем фрагменте кода мы фактически задаем переменной strCriteriaFilter строку
'"[Bad\]Col:jii!3[l4aii;8] = 5"
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100