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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 61 62 63 64 65 66 < 67 > 68 69 70 71 72 73 .. 260 >> Следующая

Visual C# NET
.string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;" +
"Initial Catalog=Northwind;Trusted_Connectton=Yes; "; GleDbConnection cn = new OleDbConneotion(strConn); cn.OpenO;
strSQL = "{? = CALL 6etReturnParameter(?)}"; GleDbCommand cmd = new 01eDbCommand(strSQL, on); cmd. Parameters.Add("@RetVal", OleDbType.Integer);
=
cmd. Parameters.AddOCustomerlD", OleDbType.WChar, 5); cmd. Parameterst"@CustomerID"]. Value = "ALFKI"; OleDbDataReader rdr = cmd. ExecuteReaderO; ¦while (rdr.ReadO)
Console.WriteLine<"OrderID " • rdr[0],ToString()); rdr.Close();
Console.WrtteLine(cmd. Parameters[0]. Value. ToStringO + " orders");
cn,Close();
Вопрос. Я пытаюсь преобразовать код на основе ADO для использования ADO.NET. В моей старой программе применялся метод Refresh набора Parameters модели ADO, Если такой метод ли у объекта ParameterCollection модели ADO.NET?
Ответ. Метода у объекта ParameterCollection нет, по крайней мере, пока.
В текущей версии объектной модели ADO.NET предоставить «волшебным способом» настраиваемому параметризованному запросу сведения о параметрах нгугъзк.
Тем не менее решение для вызова хранимых процедур имеется. У объекта CittwnaiKlBitildei (подробнее о нем — в главе 10) есть метод DeriivParaineteiv. который заполняет набор Parameters объекта Command, если этот объект вызывает хранимую процедуру, Следующий фрагмент кода демонстрирует, как использовать данную функциональность.
12g Часть II Подключавмеч: использование поставщика данных Ж":
Visual Basic .MET
Dim titmm As String = "Provider=SQLOLEDB;" & _
Data Source=(local)\NetSDK; " & _
"Initial Catalog=Northwind;" & _
Trusted_Connectlon=Yes;" Dim As New QleEbConnecticnCetrCcnn) cn.OpenO
dim cmd As New OisDaCoiTimandrSaleaRyaatagary', <.n) cmd.ComrnandType = Спгмапп'Туре. Storedl'rocedure OleDbCommandButlder.DeriveParameters(cmd)
Dim As
:Dor Each param In cmd.Parameters
Console.WriteLine{pa ram.Paramete rName)
Console.WriteLine(vbrab & param. Direction.ToStringQ?
Console.WriteLine(vbTab & param.01eDbType.To3lring<)>
Console. WriteLineO Next param on.CloseO
Visual C# .NET
etiicg strConn = "Provide"SQLOLEDB: Data Source^ Jocal)\\NetSDK;" + "Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn = new OleDbConnection(strConn); cn.OpenO;
OleDbCoiimnd cmd = new OleObCommano("SalesByCaiegory", cn); ami. Cow&sndType = СоаивалаТуре. StoredProcedure; OleDbCommandButlder.DeriveParameters(cmd); foreach (OleObParanetei param in omd. Parameters) {
Console.WriteLine(param.ParameterName); Console.Writel. iae( "\t" + param. Direction. ToStringO) Console.WriteLine<"\t" + param.01eDbType.ToString()): Console,WriteLineO;
}
cn. CloseO;
Вопрос. Объектная модель ADO поддерживает aei шхр< шн we запросы. Как выполнить запрос асинхронно в модели ADO.NET?
Ответ. В текущей версии ADO.NET подобная функциональность отсутствует.
Объект Command модели ADO позволяет выполнять запросы асинхронно, но основная причина, по которой эта возможность была реализована, — то, что написать на «классическом» Visual Basic код, работающий с потоками, большинство программистов не смогли.
..Ni-Л Framework значительно упрощает процесс работы с потоками, однако сказать, что создавать соответствующий код стало легко, нельзя. Написать устойчивый многопоточный код по-прежнему сложно, поскольку при этом возникает целый ряд новых проблем. Создать код, проблемы которого проявятся не скоро после развертывания :~рклсажйн>«, нетрудно. Если вы хотите создать многопоточ-
ГЛАВА 4 Выполнение запросов к базе данных
129
код на Visual Basic или прочтите книгу, в которой подробно рается весь процесс его написания.
Следующий фрагмент кода при помощи ^мшюппючт.к-пг демонстрирует, как выполнить запрос в другом потоке. Кроме того, в коде показан пример использования метода C'jnre, объекта command, позволяющего отменить выполнение запроса. Я не говорю, что в области работы с потоками я — гуру. Этот код — всего лишь простенький пример, и его не стоит применять в производственных приложениях.
Чтобы воспользоваться данным кодом, создайте консольное приложение на удобном вам языке. Затем добавьте в проект новый класс с именем clsSlowQuery; •Вставьте приведенный код в файлы кода, как указано в комментариях. Код вызы-метод класса, который запускает новый поток и выполняет в
нем запрос. Запрос продолжает выполняться в фоновом потоке, и метод немедленно возвращает управление сразу после начала выполнения запроса. Когда запрос завершится, его результаты отобразятся в окне консоли. Код ожидает 2,5 с.:куи..ы и затем вызывает метод чтобы отменить выполнение запроса.
Visual Basic .NET
¦Вставьте данный код в файл Module".'Д, Dim obj As New clsSlowQueryf.) obj.CallSlowQuery<) Threading.Thread.Sleep(25O0)
obj.CancelQueryO
*
"Вставьте данный код в файл clsSlowQuery.vb
Public Class clsSlowQuery
Dim cn As OleDbConnectlon Dim cmd As OleDbCommand
Dim ts As Threading TtireadStart 'Dim th As Threading.Thread
Предыдущая << 1 .. 61 62 63 64 65 66 < 67 > 68 69 70 71 72 73 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100