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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 260 >> Следующая

объекта DataRow. запись удаляется из набора родительского объекта. Метод Select возвращает массив объектов DataRow, содержащий, по сути, учазйтели. на измененные записи. Если удалять элементы из набора Rows объекта DataTable, код по-прежнему будет успешно выполняться.
Теперь пора объединить весь показанный код.
Следующий фрагмент выбирает заказанные товары в объект DataTable. изменяет содержимое заказа и передает изменения Б БД. Код демонстрирует, что все предыдущие фрагменты успешно передают отложенные изменения, и использует определенные выше процедуры. Кроме того, он включает процедуру, которая выводит текущее содержимое объекта DataTable и позволяет убедиться в успешности обновления состава заказа. Код также содержит процедуру которая восстанавливает оригинальный состав заказа и позволяет выполнять данный фрагмент кода многократно.
Visual Basic .NET
Dim As OleDbConnection
Dim da As OleDbDataAdapter
Dim tbl As DataTable = GenTableO
Sub Main()
Dim strConn, strSQL As String
BtrConn = "Provider=SQLOLEDB;Data Source=(local)\NetSDK; " 4 _ "Initial Catalog=Northwind;Trusted,Connection=Yes;" strSQL = "SELECT OrderlD, ProductID, Quantity, UnitPrice " & _
"FROM [Order Details] WHERE OrderlD = 10503 " & _
"ORDER BY ProductID" cn = New OleDbConnection(strConn) da = New OleDbDataAdapterCstrSQL, cn)
cn.OpenO
ResetOrderO da.Fill(tbl)
DisplayOrderrinitial contents of database")
ModifyOrderf)
DisplayOrderC'Modified data in DataSet")
SubrcitChangesByHand()
tbl.ClearQ
da.Fill(tbl)
contents of database")
cn.CloseO
End Sub
ГЛАВА 10 Передача обновлений в базу данных 359
Private Sub ModifyOrderO Dim row As Data Row
row = tb!.Rows(O) row.DeleteC)
rem = tbl.Rows(1)
row("Quantity") = CTypeCrowC"Quantity"), Int16) - 2
rev, = tbl. NewRow row("OrderlD") = 10503 row("ProductrD") = 1 row("Quantity") = 24 row("UnitPrice") = 18.0 tbl.Rows.Add(row) End Sub
Public Sub DisplayOrsfsrCByVal strStatus As String) Dim row As DataRow Dim col As DataColumn Console.WriteLine(strStatus)
Console.WriteLine(" OrderlD ProductID &
"Quantity UnitPrice")
For Each row In tbl.Select("", "ProductID") For Each col In tbl.Columns
Console.Write(vbTab & row(col) & vbTab)
Next
Console.ViriteLine()
Next
Console.WriteLine()
End Sub
Private Sub
Dim strSQL As String
Dim cmd As OleDbCommand = cn. CreateComniand<)
StrSQL = "DELETE FROM [Order Details] WHERE OrderlD = 10503"
cmd.CommandText = strSQL
cmd.ExecuteNonQueryO
¦rStrSQL = "INSERT INTO [Order Details] " & _
(OrderlD, ProductID, Quantity, DnitPrice) " & _ VALUES (10503, 14, 70, 23.25) " cmd.CommandText = strSQL
cmd. ExecuteNonQueryO
strSQL = "INSERT INTO [Order Details] " & _
(OrderlD, ProductID, Quantity, UnitPrice) " &_ VALUES (10503, 65, 20, 21.05)" cmd.CommandText = strSQL
cmd. ExecuteNonQueryO
End Sub
360
Часть III Автономная работа с данными: объект DataSei модели ADO.NET
Public Function deniable0 As DataTable
Dim tbl As New DataTable<"Order Details") Dim col As DataCoIumn With tbl.Columns
col = .AddC"OrderID", GetType(Integer))
col.AllowDBNull = False
col = .Add("ProductID", GetType(Integer))
col.AllowDBNull = False
col = .Add("Quantity", GetType(Int16))
col.AllowDBNull : False
col = .Add("UnitPrice", GetType(Decimal))
col.AllowDBNull = False |End With
tbl. PrlmaryKey = New DataCoIumn<) {tbl.Columns{"OrderID"),
tbl.ColumnsC'ProductlD")}
Return tbl End Function
Visual C# .NET
static OleDbConnection static OleDbDataAdapter da;
static DataTable tbl;
static void Main(ytnng[] args) {
string strConn, strSOL;
StrConn = "Provide r=K}LCK.E[;B; Data Source=(locai)\\NetSDK; " +
"Initial Catalog=Northwind; Trusted_Connection=Yes;"; strSQL = "SELECT OrderlD, ProductID, Quantity, UnitPrice ".+
"FROM [Order Details] WHERE OrderlD = 10503 " +
"ORDER 8Y ProductID"; cn = new OleDbConnection(strConn); da = new OleDbDataAdapterCstrSQL, cn); tbl = GenTableO;
cn.Open(); ResetOrderQ; da.Flll(tbl);
contents of
HodifyOrderO;
contents of
SubmitChangesByHand();
tbl.ClearO;
da.Fill(tbl);
contents of
cn.Close(};
static void ModifyOrderO
f
ГЛАВА 10 Передача обновлений в базу данных
361
DataRow row;
L.'*;;; = t!;l. RowsLOJ; row.Delete();
ro« = tbl.Rowstl];
row["Quantity"] = (Int16) row["Quantity] * 2;
row = tbl.NewRowO; row["OrderID"] = 10503; rowE"ProductID"] = 1; irow[ "Quantity"] = 24; rowrunitPrice"] = 18.0; tbl.Rows.Add(row);
static void DispiayOrder(string strStatus) {
Console.WriteLine(strStatus);
Consols. WriteLinsC OrderlO Product ID ' +
. • "Quantity UnitPrica");
foreach(DataRow row in tbl.Select("", "ProductID"))
{
foreach(DataColumn col in tbl. Columns)
Console.Write("\t" + row[col] + "\t"); Console. WriteLineO;
}
Console. WriteLineO;
}
static void
<
string strSQL;
OleDbCommand cmd = cn. CreateCommandO;
strSQL = "DELETE FROM [Order Details] WHERE OrderlD = 10503" cmd.CommandText = strSQL; cmd.ExecuteNonQuery();
strSOL = "INSERT INTO [Order Details] " +
(OrderlD, ProductID, Quantity, UnitPrice) " + VALUES (10503, 14, 70, 23.25) " cmd.CommandText = strSQL; cmd. ExecuteNonQueryO; StrSQL = "INSERT INTO [Order Details] " +
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100