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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 236 237 238 239 240 241 < 242 > 243 244 245 246 247 248 .. 260 >> Следующая

"Trusted_Connectlon=Yes;" strSQL = "SELECT OrderlD, CustomerlD, OrderDate FROM Or ders " & _
"WHERE OrderlD = 10643" Dim on As New SqlConnection(strConn) Dim Cffld As New SqlCommand(strSQL, cn) Dim rdr As SqlDataReader Dim intOrderlD As Sqllnt32 Dim strCustomerlD As SqlString Dim datOrderDate As SqlDateTime cn.OpenO
= ma. Exec-L'tePe«der(CosnmsROlEeriavi.rjr. Single Row) If rdr.Read Then
intOrderlD = rdr.GetSqlInt32(0)
StrCustomerlD = rdr. GetSqlStrlng(1)
datOrderDate = rdr.GetSqlDateTime(2) End If rdr.CloseO cn.Closef)
Приложение А Прочие поставщики данных 565
Visual СП .NET
//using System.Data.SqlTypes; string strConn. strSQL;
strConn = "Data Source=(local)\\NetSDK; Initial Catalog=N orthwind;" +
"Trusted_Connection=Yes;"; strSQL = "SELECT OrderlD, CustomerlD, OrderDate FROM Or ders " +
"WHERE OrderlD = 10643"; SqlConnection cn = new SqlConnection( strConn); SqlCommand end = new SqlCommandfst rSOL, cr); SqlOataReader rdr; Sqllnt32 intOrderlD; SqlStrlng st rCustomerlD; SqlDateTirae datOrderDate; cn.0pen();
= crcd. ?*8euteRe3der{Comrr,andBehavior. Single Row); if (rdr.ReadO) {
intOrderlD = rdr.GetSqlInt32(0); strCustomerlD = rdr. GetSqlSt ring( 1); datOrderDate = rdr.GetSq!DateTime(2);
}
rdr. Closed; cn.CloseO;
Зачем использовать эти специфичные для гааданщкка типы данных? Основных причин две.
• Производительность. Типы данных из пространства имен SqlTypes повышают производительность кода, поскольку именно их внутренне использует поставщик SQL dent .Nt'T Data Provider. Если возвращать данные с использованием типов данных вызывая методы и т.д.,
SQL Client .NET Data Provider придется преобразовывать эти данные. Использование специфичных для поставщика типов данных позволяет избежать такого преобразования. Я обнаружил, что производительность кода на основе пространства имен SqlTypes обычно на выше производительности
стандартные типы данных
• Простота кода. Мало кому из программистов нравится обрабатывать значения NULL. В показанном ранее фрагменте кода, использовавшем стандартные типы данных .NET, нет проверок на наличие значений NULL. Если бы любое из полей в запросе содержало значение NULL, код сгенерировал бы исключение. Типы данных Л Pi не позволяют сохранять значения NULL. Прежде чем получать данные, убедитесь с помощью метода в отсутствии таких значений.
Тем не менее специфичные для поставщика типы данных позволяют использовать значения NULL. Все классы из пространства имен
ют метод Таким образом, результаты запроса можно сохранять с исполь-
зованием этих типов, не проводя предварительную проверку данных. И хотя такая проверка данных в коде все же требуется, ее можно выполнить позже. При применении типов ЩЩ5обращение к объекту SqlDataReader упроща-
566 Приложения
ется, т. е. результаты запросов удается получить быстрее. Кроме того, это позволяет быстрее закрыть объект SqlDataReader и освободить соединение,
Вызов хранимых процедур
Объект SqlCommand позволяет вызывать хранимые процедуры SQL У сіте г и MSUF Данный объект предоставляет свойство CommandType, упрощающее код для вызова хранимый процедур. Можно задать свойству ComrmndTexiобъекта SqlCommand имя хранимой процедуры, свойству CommandType - значение StoredProcedure и затем вызвать эту хранимую процедуру:
Visual Basic NET
Dim strConn As String
strConn = "Data Source=(local)\NetSDK; Initial Catalog=No rthwtnd;" 4 _
"Trusted_Connection=Yes;" Dim As New Sq'JConnection(strConn) Dim cmd As New SqlCommand("CustOrdersOrders", en) Mid, Co«!isandTyp« = ComrcandType. StoredProcedure Dim param As SqlParameter
param = cmd. Parameters. Add("®CustomerID", SqlD bType.NChar, 5) param.Value = "ALFKT" en.Open()
Dim rdr As SqlDataReader = cind.ExecuteReaderO IDo While rdr.FeadO
Console.WriteLine(rdr("OrderID"))
Loop
rdr.Close() cn.Close()
Visual C# .NET
string strConn;
strConn = "Data Source=(local)\\NetSDK; Initial Catalog=N orthwind;" +
"Trusted_Connection=Yes;"; SqlConrsctlon cr = new SqlConrecticn(strConn): SqlCommand cmd = new SqlCommandC'CustOrdersOrd ers", en); cmd.CommandType = GoiainandType. StoredProcedure; SqlParameter param;
param = cmd. Parameters.Add("@CustomerID", SqlD bType.NChar, 5); =
cn.OpenO;
SqlDataReader =
while (rdr.ReadO)
Console.WriteLlneC rdr["0 rderlD"]); rdr.CloseO; cn.CloseO;
Воспользовавшись средствами трассировки SQL Server, вы увидите, что поставщик SQL Client .NET Data Provider преобразовал эту информацию в следующий синтаксис:
Приложение А Прочие поставщики данных . '
567
EXEC CustOrdersurders SCustoifierlo
Для обеспечения максимальной производительности кода используйте такой же синтаксис, но не изменяйте значение свойства Сон-интхПур' no умолчанию — Text. Чтобы получить с использованием этого синтаксиса данные при помощи параметров вывода, добавьте после имени параметра ключевое слон о OUT;
exec ХракииаяПроцедура еПарвиетрВеода. §>Паракатр8ыеода out
Получение информации схемы БД
Объект OkDhConm-ctiof} предоставляет метод Gi-tOSt-DhScbernn'Jhhh. позволяющий получить из БД информацию схемы, например список таблиц или столбцов. Прямого эквивалента этой функции у поставщика SQL Client .NET Data Provider нет.
Предыдущая << 1 .. 236 237 238 239 240 241 < 242 > 243 244 245 246 247 248 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100