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

 

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

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

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

Dim As Boolean
Public Sub
If Not blnRunningQueryThen SyncLock He
blnRunningQuery = True
ts = New Threading.ThreadStart(AddressOf CallQueryAsync)
th = New Threading.Thread(ts)
th.Start{)
Console.WriteLine( "Running query") End SyncLock
Else
Dim strMessage As String
strKessage = "Can't execute CallSlowQuery method." & _ vbCrLf & _
vbTab S "I'm still waiting on the results " & _
130
Часть II Подключаемся: использование поставщика данных NET
"of a previous query." Throw New Exception(strMessage) End If
End Sub
IPublic Sub CancelQueryC) If blnRunningQuery Then
SyncLock Me Try
blnCancelledQuery = True cmd. CancelQ Catch ex As Exception
Console.WriteLineCex.Message) End Try End SyncLock
Else
Dim strMessage As String
strMessage = "Can't execute CancelQuery method." & vbCrLf &
vbTab & "I'm not currently running a query." Throw New Exceptlon(strMessage) End If
End Sub
Private Sub CaliOueryAsyncO Dim strConn As String
strConn = "Provider=SQLOLEDB;Data Source=(10cal)\NetSDK; " & _ "Initial Catalog=Northwind;Trusted_Connection=Yes;" Dim strSQL As String = "WAITFOR DELAY '00: 00:10';" & _ "SELECT CountC*) FROM Customers" cn = New OleDbConnection(strConn) cn.0pen()
cmd = New 01sDbCoinmand(strS0L, cn)
Dim irtNuBiCtistomers As Integer Try
intNumCustoners = CInt(caid. ExscuteScalar) Console.WriteLine(intNumCustomers) Catch ex As Exception
If blnCancelledQuery = True Then
Console.WriteLine("Query cancelled")
Else
Console.WriteLina(ex.Message)
End If End Try
cn.Close( )
blnRunningQuery = False blnCancelledQuery = False End Sub
End Class
ГЛАВА 4 Выполнение запросов к базе данных
Visual С# МЕТ
//Вставьте данный код в файл Class1.cs
clsSlowQuery obj = new clsSlowQuery*);
obj.CallSlowQueryO;
System. Threading . Thread. Sleep(2500);.
obj .CancelQuaryO;
//Вставьте данный код в файл clsSlo*Ouery cs
public class clsSlowQuery
{
OleDbConnection cn; OleDbCommand cmd;
Syst em.Threadi ng. ThreadStart ts; System.Threading.Thread th;
bool blnRunningQuery, blnCancelledQuery;
public void CailSiowQueryQ {
if {!blnRunningQuery) lock (this) {
blnRunningQuery=true; ts = new
System. Th reading. ThreadStart (this.CallQueryAsync);
th = new System. Threading. Thread(ts): th.StartO;
Console. WriteLineC "Running query");
}
else
{
string strMessage;
strMessage = "Can't execute CallSlowOuery method. \n\t" + "I'm still waiting on the results " + "of a previous query.";
throw new Exception(strMessage);
I
}
public void
i
if (blnRunningQuery) lock(this) (
try
{
blnCancelledQuery = cmd. CancelQ;
132 Часть II Подключаемся: использование поставщика данных NET
catch (Exception ex) <
Console.WriteLine (ex.Hessage);
}
}
else
{
string strMessage;
strMessage = "Can't execute CancelQuery method.\n\t" +
"I'm not currently running a query."; throw new Exception(strMessage);
;
private void CallQueryJisyncf)
{
string strConn;
strConn = "Provider=SQLOLEDB; Data Source=(local)\\MetSOK; + "Initial Catalog=Northwind;Trusted_Connection=Yes;
string strSQL = "WAITFQF DELAY '00:00:10';' +
"SELECT Count<«) FROM Customers"; cr = new OleDbCo.-nect ion (strConn): cn,0pen();
croc = new OleObCoinmand(strSOl. on);
int
try
{
intNumCustomers = (int) cmd. ExacuteScalarC); Console, WriteLine(intNumCustorners);
:i
catch (Exception ex)
if (blnCancelledQuery)
Console. WriteLine( "Query cancelled");
else
Console.WriteLine(ex.Message);
}
cn.Close();
blnfiunningOuery = false;
blnCancelledQuery = false;
1
}
ГЛАВА
5
Получение данных
с помощью объектов
DataAdapter
уже говорилось в главе 4, объекты Command и DataReader позволяют выполнять запросы и просматривать их результаты. Но что, если вам требуется поместить результаты запроса в объект ОоШле:К'уо^^л'' Можно написать код, который заполнял бы обмлс; DataSetновыми записями, перемещаясь по данным объекта DataReader.
Visual Basic .NET
Dim ds As New DataSet()
Dim tbl As DataTable = ds.Tables.Add("Customers") 1 Готовим объект DataTable Dim cmd As New OleDbCommandQ
¦ Готовим объект Command
Dim rdr As OleDbuataReader = cmd.Executefleader()
pim row As DataRow Do While rdr.ReadO
row = tbl. New.Row()
=
'Выбираем данные из других столбцов tbl.Rows.Add(row)
Loop
irdr. CloseO
134
Часть II Подключаемся: испопьзованме поставщика данных NET
Visual C# .NET
DataSet = new DataSet*);
IDataTable tbl = ds.Tables.Add("Customers");
//Готовим объект DataTable
OTeDbCommand crnd = new 01eDbCommarid(};
//Готовим объект Command
OleDbDataReader rdr = cmd.ExecuteReader{);
Data Row row;
while (rdr.ReadO)
!
row = tbl.Newftaw*);
irow["CustomerID"] = rdr["CustomerlD"]; //Выбираем данные .. других столбцов tbl.Rows.Add(row);
I
rdr. Close();
Ну и ну! Запись результатов запроса в объект DataSet должна осуществляться просто. А этот код определенно сложен уж конечно, не riot'ciic4iii;;ici быстрой разработки приложений. Кто же станет его писать?
К счастью, ничего писать не надо. Объектная модель ADO.NETjipe;i.'iar.K-r вам изящное решение — объект DataAdapter. Здесь рассказывается об использовании этого объекта для записи результатов запросов в объекты DataSet и DataTable.
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100