Vb.net mon1
Transcript of Vb.net mon1
Visual Basic.NET
Visual Basic.NET
Visual Basic .NET-ын ємнєх хувилбаруудаас ялгарах онцлог, нэмэгдсэн шинэлэг ойлголтуудыг энэхvv хичээлээс уншиж мэдэх болно. Visual Basic .NET нь шинэчлэгдэн чадварлаг Объект Хандалтат Программчлалын (Object Oriented) хэл болсон. Мєн вэб хєгжvvлэхэд зориулсан Web Form-ууд нь броаузер-суурьтай Web Appliction-ыг хялбар, хурдан хийх боломж олгоно. Ингээд бусад єєрчлєлт, шинэчлэлийн талаар танилцуулъя.
МассивOption base мэдэгдэл хасагдсан. Єєр хэлбэл бидний мэдэх VB6-д массивийн эхлэл 1-ээс байсан бол одоо VB.NET-д массивийн эхлэл 0-ээс эхлэдэг болсон. Жишээ нь:
Dim astrValue(20) as String
Дээрх код нь 21 эльмент бvхий тэмдэгт мєр тєрлийн массив vvсгэнэ. Тэмдэгт мєр лvv хандах ньТэмдэгт мєрийг тодорхой урттай зарлахыг vл зєвшєєрнє.Тэмдэгт мєр нь єєрийн гэсэн шинж чанараар хангагдсан. Жишээ нь:
Dim strName As String
StrName = “ “.PadRight(30)
StrName хувьсагчийг 30-н хоосон зайгаар дvvргэж байна. Бvхэл тоон тєрлvvдЗарим бvхэл тоон тєрлvvдийн авах утгын хэмжээ єєрчлєгдсєн. Жишээлбэл Integer тєрєл -32,678 -ээс 32,767 хvртэл утга авдаг байсан бол одоо VB.NET-д -2,147,483,648 -аас 2,147,483,647 хvртэл утга авна. Decimal тєрєлCurrency тєрєл хасагдан, оронд нь Decimal тоон тєрєл нэмэгдсэн. Энэ тєрєл нь бусад хэлнvvд болон єгєгдлийн баазтай бvрэн зохицох чадвартай ба 0-ээс 28 хvртэл оронг багтааж чадна. є.х Бvхэл ба бутархай оронгийн нийт тоо нь 29-аас ихгvй байна. Char тєрєлChar тєрєл нь 2 байт хэмжээтэй болсон ба UNICODE тэмдэгтvvдийг агуулж чадах болсон. Object тєрєлVariant тєрєл Object тєрлєєр солигдсон. Object тєрєл нь єєр нэмэлт бусад єгєгдлийн тєрлийг хадгалж чадна. DefTypeDefType-г тодорхойлсноор хувьсагч ямар vсгээр эхэлснээс шалтгаалан тухайн хувьсагчийн тєрлийг тодорхойлж болдог байсан билээ. Тэгвэл одоо vvнийг хэрэглэх боломжгvй болсон ба хувьсагчийг заавал зарлах шаардлагатай. Boolean vйлдэл“And”, “Or”, “XOR” vйлдлvvд нь Boolean болон бит vйлдлvvдэд хэрэглэгддэг байсан. Одоо шинэ BitAnd, BitOr, BitXOR, BitNot гэсэн vйлдлvvдийг хэрэглэх боломжтой. Эдгээр vйлдлvvдийг Boolean болон тоон тєрлvvдэд хэрэглэж болно. Vйлдэл хялбарчлахVB.NET-д AndAlso, OrElse хоёр шинэ логик vйлдэл нэмэгдсэн. Хэрэв та олон логик vйлдэл ашиглаж байгаа бол AndAlso, OrElse нь илvv vйлдлээс зайлсхийх боломж олгоно. OrElse логик vйлдлийг ашигласан vед эхнийх нь vнэн байх юм бол илэрхийлэл шууд vнэх гэсэн утга буцаана.AndAlso логик vйлдлийг ашигласан vед эхнийх нь худал бол илэрхийлэл шууд худал гэсэн утга буцаана. Жишээ нь:
Хэрэв доорх кодыг ашиглавал FlagTestFalse() ба FlagTestTrue() функцvvд нь 2-уул дуудагдана.
1
Visual Basic.NET
If FlagTestFalse() And FlagTestTrue() Then
MessageBox.Show(" 'Энэ нєхцєл биелэхгvй")
End If
Private Function FlagTestFalse() As Boolean
MessageBox.Show("FlagTestFalse()")
Return False
End Function
Private Function FlagTestTrue() As Boolean
…
Return True
End Function
Хэрэв And vйлдлийн оронд AndAlso vйлдлийг ашиглавал FlagTestTrue() функц нь дуудагдахгvй.
If FlagTestFalse() AndAlso FlagTestTrue() Then
MessageBox.Show(" 'Энэ нєхцєл биелэхгvй")
End If
Объектын vндсэн propertyОбъектын vндсэн property vгvй болсон. Жишээ нь: VB6-д TextBox1=”Text1” гэж оноохыг зєвшєєрдєг байсан бол VB.NET-д заавал TextBox1.Text=”Text1” гэж бичихийг шаардана. Классын шинж чанарыг (property) тодорхойлохVB-ийн ємнєх хувилбаруудад классын шинж чанарыг тодорхойлохдоо Property Get/ Set/ Let тvлхvvр vгvvдийг хэрэглэдэг байсан билээ. VB.NET-д нэг нэрэн дор Get, Set-ийг хэрэглэнэ. Жишээлбэл:
Private mstrFirstName As String
Private mintCode As Integer = -1
Property FirstName() As String
Get
Return mstrFirstName
End Get
Set(ByVal Value As String)
mstrFirstName = Value
End Set
End Property
2
Visual Basic.NET
Property Code() As Integer
Get
Code = mintCode
End Get
Set(ByVal Value As Integer)
If Value = 0 Or Value = 1 Then
mintCode = Value
Else
mintCode = -1
End If
End Set
End Property
Хэрэглэгчийн тодорхойлсон тєрлvvдType…End Type тvлхvvр vгийг ашиглан хэрэглэгчийн тодорхойлсон тєрлvvдийг vvсгэдэг байсан бол VB.NET-д Structure…End Structure тvлхvvр vгийг ашиглана.
Structure Customer
Public CustID As Integer
Dim CustomerName As String
Private TotalSalesAmount As Decimal
End Structure
Хувьсагч тодорхойлоход гарсан єєрчлєлт
Dim intLoop, intValue as Integer
VB6-д intLoop хувьсагч нь Variant тєрєл авах болно. Харин VB.NET-д intLoop, intValue хувьсагчууд нь 2-уул Integer тєрєл байх юм. Объект vvсгэхОбъект vvсгэхдээ дараах аргуудаар vvсгэж болно.
a. Dim oCust As New Customer()
b. Dim oCust As Customer = New Customer()
c. Dim oCust As Customer
d. oCust = New Customer()
Method-оор солигдсон функцvvд
Функц Єєрчлєлт
Circle() System.Drawing.DrawEllipse
Line() System.Drawing.DrawLine
3
Visual Basic.NET
Atn() System.Math.Atan
Atn() System.Math.Atan
Sgn() System.Math.Sign
Sqr() System.Math.Sqrt
Rnd() System.Math.Rnd
Round() System.Math.Round
IsNull() IsDBNull()
IsObject() IsReference()
VarType() System.Object.GetType()
MsgBox MessageBox.Show()
LSet System.String.PadRight
RSet System.String.PadLeft
DoEvents System.WinForms.Application.DoEvents
Зарим єєрчлєлтvvдХэлэнд гарсан бусад єєрчлєлтvvдээс дурдахад:
Pset, Scale-ууд хасагдсан
Empty, Null-ууд хасагдсан IsEmpty() нь хасагдсан Илэрхийлэлд Null утга оноовол алдаа єгєх болно Тогтмолууд нь ControlChars классд багтах болсон Функцын дараа $ тэмдэг хэрэглэх шаардлагагvй Let a=b нь ажиллахгvй Class_Initialize, Class_Terminate–ууд нь хасагдсан VarPtr, VarPtrArray, VarPtrStringArray, ObjPtr, StrPtr–ууд нь хасагдсан
WinForm-ийн єєрчлєлтvvдVisual Basic.NET-ийн формуудад маш их єєрчлєлт орсон.
Бvх контролын TabIndex-ийг 0 оноож болно
Zorder нь runtime vед контролуудын байрлалыг єєрчилдєг Шинэ LinkLabel контрол нь гиперлинк хийхэд зориулагдсан GroupBox контрол Frame контролоор солигдсон
4
Visual Basic.NET
Шинэ Splitter контролыг ашиглан Explorer-like интерфайс vvсгэж чадна Drag & Drop бvрэлдэхvvнд ихээхэн єєрчлєлт орсон DDE (Dinamic Data Exchange)-г дэмждэггvй Time контролын Interval-ийг 0 болгохыг зєвшєєрдєггvй OLE контролыг дэмжддэггvй Shape контрол байхгvй Line контрол байхгvй Form.PrintForm method хасагдсан Clipboard ажиллагаа их єєрчлєдсєн. Одоо System.WinForms.Clipboard ашиглана. Формын Name property-г утгыг авах боломжгvй Формыг Show хийхийн тулд форм тєрлийн хувьсагч зарлах ёстой Form болон контролын координатуудыг Twips хэмждэг байсан бол .NET-д Pixel-ээр хэмждэг
болсон. Єгєгдлийг DAO болон RDO ашиглан боловсруулж чадахгvй. Зєвхєн DAO ашиглагдсан
прожекттой vед хэрлэглэх боломжтой.
DebugingDebug.Print нь Debug.Write болон Debug.WriteLine-уудаар солигдсон. Єгєгдлийн баазын хэрэгсэлvvдDataView цонх хасагдан оронд нь Server Explorer нэмэгдсэн. Бvх єгєгдлийн баазын хэрэгсэлvvд нь SQL Server 2000 –тай ажиллахад зориулагдсан. Web Application-уудVisual Basic.NET дээр вэб хэрэглээний программ байгуулах ажиллагаа эрс єєрчлєгдсєн. Хэрэв танд VB6 дээр вэб хийх зарим техникийг хэрэглэсэн прожект бий бол тэдгээрийг дахин бичих хэрэгтэй болно.
IIS Application-ууд дэмжигддэггvй харин оронд нь ASP.NET болон WebForm-уудыг хэрэглэх шаардлагатай.
DHTML Application-ууд мєн дэмжигддэггvй ActiveX Document-ууд мєн дэмжигддэггvй
Visual Studio .NET ба IDE | дээшээ | DataTable класс | нvvр хуудас
DataTable класс (Visual Basic .NET)
o DataGrid–ийг єгєгдлєєр дvvргэж сурах
o DataTable болон DataRow классын талаар vндсэн мэдлэг олж авах
DataTable классDataTable класс нь єгєгдлийн баазын хvснэгттэй тєстэй .NET-ийн класс юм. Энэ нь мєрvvдээс тогтох ба мєр болгонд баганы олонлог багтсан байдаг. Багана болгон нэртэй байх ба мєн єгєгдлийн тєрєл, аттрибут (жишээ нь ReadOnly –зєвхєн уншигдах), DefaultValue-тай байна. DataTable класс нь DataRow oбъектуудаас тогтох ба DataRow объект болгон нь DataColumn объекуудаас бvрддэг.
5
Visual Basic.NET
DataTable-ийг хэрэглэх ньDataTable нь олон тооны мєртэй мєр болгон нь олон утга агуулах тийм єгєгдлийг хадгалах, боловсруулах vед хэрэглэгдэнэ. Та DataTable-ээс єєр єгєгдєлтэй харьцах механизм (user-defined массив, классын collection, ADO Recordset) хэрэглэж болох боловч DataTable хэрэглэхэд илvv хялбар байдаг.
DataTable vvсгэхЮуны ємнє DataTable тєрлийн хувьсагчийг глобалаар (бvх процедуруудаас гадна) зарлах хэрэгтэй.
Public Class frmProductsSimple
Inherits System.Windows.Forms.Form
Private mdt As DataTable
Одоо DataTable-ийг хэрхэн єгєгдлєєр дvvргэх талаар жишээ vзье.
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnLOad.Click
Dim dr As DataRow
Dim intLoop As Integer
Me.Cursor = Cursors.WaitCursor
' Шинэ DataTable объект vvсгэх
mdt = New DataTable()
' DataTable-д баганууд vvсгэх
mdt.Columns.Add("ProductID")
mdt.Columns.Add("ProductName")
mdt.Columns.Add("UnitPrice")
mdt.Columns.Add("UnitsInStock")
' DataTable–г єгєгдлєєр дvvргэх
For intLoop = 1 To 10
' Шинэ мєр vvсгэх
dr = mdt.NewRow
' Шинэ мєрийн багануудад єгєгдєл нэмэх
dr("ProductID") = intLoop
6
Visual Basic.NET
dr("ProductName") = "Product " & intLoop.ToString()
dr("UnitPrice") = intLoop * 10
dr("UnitsInStock") = intLoop * 20
' Шинэ мєрийг DataTable-рvv нэмэх
mdt.Rows.Add(dr)
Next
' Grid-ийн багануудыг AutoSize хийх
grdProducts.PreferredColumnWidth = grdProducts.AutoColumnSize
' Grid-ийг єгєгдлєєр дvvргэх
grdProducts.DataSource = mdt
Me.Cursor = Cursors.Default
End Sub
Та дээрх процедурыг ашигласнаар бvтээгдэхvvнтэй холбоотой єгєгдлийг загвар байдлаар vvсгэх болно. 10-н удаа давталт хийх ба давталт болгонд шинэ DataRow объект vvсэх болно. DataRow объект нь DataTable-д тодорхойлсон багануудын тодорхойлолтуудтай хамт байгуулагддаг. DataRow-д буй багануудын нэг болох ProductID багана руу давталтын тоологч (intLoop)-ийг, “Product 1”, “Product 2”, гм-ийг ProductName багана руу гэх мэтээр дvvргэлээ. Эцэст нь DataTable-ийн Rows collection-ний Add method-оор DataRow oбъектыг DataTable рvv нэмсэн байна.
DataRow-тэй ажиллахGrid-ийг єгєгдлєєр дvvргэсний дараа нэг мєр сонгож єгєгдлєє дэлгэцэнд vзvvлэх хэрэгцээ гардаг. vvнийг хийхийн тулд та хэрэглэгчийн товшилт (click) хийсэн мєрийн дугаарыг мэдсэн байх хэрэгтэй. Хэрэв та мєрийн дугаараа мэдэж байгаа тохиолдолд DataTable-ийн Rows collection-ийг ашиглах тухайн мєрийг DataRow-рvv дамжуулж чадна.
Private Sub grdProducts_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles grdProducts.Click
Dim dr As DataRow
Dim intRow As Integer
' Идэвхтэй мєрийн дугаар авах
intRow = grdProducts.CurrentCell.RowNumber
' DataRow-ийг DataTable-ээс авах
dr = mdt.Rows(intRow)
‘TextBox контролуудыг єгєгдлєєр дvvргэх
7
Visual Basic.NET
txtProductID.Text = dr("ProductID")
txtProductName.Text = dr("ProductName")
txtUnitPrice.Text = dr("UnitPrice")
txtUnitsInStock.Text = dr("UnitsInStock")
End Sub
ADO.NET
o ADO.NET классуудыг танилцуулга
o ADO . NET -г ADO -той харьцуулах нь
ADO.NET классуудыг танилцуулгаADO.NET нь санах ойд єгєгдлийн олонлогуудыг байгуулахыг зєвшєєрдєг объектын загвар юм. Та єгєгдлийн олонлогуудын єгєгдлийг кодоос, текст файлаас, exchange server-ээс, єгєгдлийн баазын системээс авч болно.
ADO.NET-д сурах зайлшгvй хэрэгтэй хэд хэдэн класс бий. Танд энэ бvх классуудын товч тайлбарлая.
DataSet - Энэ классыг санах ой дахь єгєгдлийн бааз гэж зvйрлэж болно. DataSet нь нэг болон тvvнээс дээш DataTable объектуудыг багтааж чаддаг ба тэдгээрийн хооронд relationship тогтоож чадна. Энэ классад жинхэнэ єгєгдлєєс уншсан єгєгдєл байрлах ба ямар нэгэн єєрчлєлт бvр нь тvvн рvv хийгдэж байдаг. ADO.NET-ийн єєр объектыг ашиглан єєрчлєлтийг єгєгдлийн бааз руу хадгална.
DataTable – Энэ класс нь єгєгдєл бvхий мєрvvдийг агуулж байдаг. Мєр болгон багануудаас бvрдэх ба багана болгон нэгэн тєрєл бvхий єгєгдлvvдийг агуулж байдаг.
DataView – Энэ класс нь онцлог шинжээр харагдах DataTable юм. Энэ объект нь DataTable объект дээр эрэмбэлэлтvvд, шvvлтvvрvvдийг хэрэглэж байдаг.
Connection - Энэ класс нь єгєгдлийн эхтэй (data source) холболт хийхэд хэрэглэгддэг. Энэ классад vндсэн OLE DB, SQL server гэсэн 2 тєрєл байна.
Command – Энэ класс нь SQL мэдэгдлvvдийг єгєгдлийн эх рvv буцаан дамжуулж байдаг. Та SQL болон stored procedure-уудыг ашиглан бvх єгєгдлийг сэргээх ба єєрчлєлт хийж чадна. Энэ классад єєрчлєлтvvдийг хадгалж чадах, єгєгдєл сэргээх method-ууд бий.
CommandBuilder - Энэ класс нь SELECT, INSERT, UPDATE, DELETE command oбъектуудыг байгуулахад хэрэглэгддэг.
DataAdapter - Энэ класс нь DataSet эсвэл DataTable-ийг єгєгдлийн баазаас єгєгдлєєр дvvргэхэд хэрэглэгддэг. DataAdapter нь єгєгдлийн баазтай холболт vvсгэх ба SQL мэдэгдэлд тохирох command oбъектыг байгуулж, єгєгдлийг сэргээн, DataSet эсвэл DataTable-ийг байгуулаад, єгєгдлийн баазаас салгагдана.
DataReader - Энэ класс нь єгєгдлийн эхээс єгєгдлийг хурдан уншиж чадах ба forward-only, зєвхєн уншигдах курсор юм. Энэ класс нь DataGrid-vvдийг, ListBox-уудыг, ComboBox-уудыг дvvргэхэд хамгийн тохиромжтой.
8
Visual Basic.NET
ADO классуудыг хэрэглэх нь
Та дээрхээс .NET ийн зарим классууд яаж єгєгдлийг дамжуулж буйг, DataSet-vvд нь хэрхэн хэрэглэгддэгийг харж байна. DataAdapter-ууд нь SQL Server, Oracle, Access зэрэг єгєгдєл хадгалагч (Data Store)-аас єгєгдєл уншин DataSet-vvдийг дvvргэдэг. DataSet нь байгуулагдсан бол энэ нь WinForm, WebForm, Web Service эсвэл бvр єєр ямар нэгэн Java дээр бичигдсэн Unix сервэр дээр ажиллах вэб хуудасанд ч хэрэглэгдэж болно.
OleDb ба SqlClientЭнэ 2 нь ялгаатай шинж бvхий Connection, Command, CommandBuilder, DataAdapter, DataReader классуудтай. OleDb нь OLE DB provider-уудыг хэрэглэн єгєгдлийн эхvvдийг авахад зориулагдсан. Энэ 2 нь єєр єєр NameSpace-д байрлана.
Доор OleDb классуудыг хэрхэн тодорхойлохыг жишээ болгон бичье.
Dim oConn As OleDb.OleDbConnection
Dim oCmd As OleDb.OleDbCommand
Dim oBuild As OleDb.OleDbCommandBuilder
Dim oDA As OleDb.OleDb.OleDbDataAdapter
Dim oDR As OleDb.OleDb.OleDbDataReader
Доор Sql классуудыг хэрхэн тодорхойлохыг жишээ болгон бичье.
Dim oConn As SqlClient.SqlConnection
Dim oCmd As SqlClient.SqlCommand
Dim oBuild As SqlClient.SqlCommandBuilder
Dim oDA As SqlClient.SqlDataAdapter
Dim oDR As SqlClient.SqlDataReader
ADO.NET-г ADO-той харьцуулах нь
9
Visual Basic.NET
ADO.NET нь ADO-гийн сайжруулсан, боловсронгуй хувилбар юм. Энэ 2 объект загварын зарим vндсэн єєрчлєлт байдаг боловч эцсийн vр дvн нь ижил хэвээр билээ. Танд єгєгдєл хадгалах, єгєгдєл сэргээх, єгєгдєлд засвар хийх объект загвар хэрэгтэй билээ. ADO нь танд тvvнийг RecordSet-vvдийн тусламжтай гvйцэтгэхийг зєвшєєрдєг бол ADO.NET нь танд тvvнийг DataSet-д болон бусад объектын тусламжтай хийхийг зєвшєєрдєг.
ADO.NET ба ADO-гийн vндсэн ялгаа нь ADO.NET нь єгєгдлийн vл холбогдсон (disconnected) хэлбэр, ADO нь холбогдсон тєрлийн объект загвар гэдэгт байгаа билээ.
ADO.NET Connection Объект ба Command Объект (Visual Basic .NET)
Connection ОбъектADO.NET Connection объект нь єгєгдлийн баазын холболтыг программ болон database engine 2-ын хооронд хийхэд хэрэглэнэ. Хэрэв та єєрийн SQL Server лvv холболт хийх гэж байгаа бол дараах маягаар бичиж болно.
Provider=sqloledb;Data Source=(local);Initial Catalog=Northwind;User ID=sa;Password=;
Access 2000 єгєгдлийн бааз хэрэглэх бол provider-ийн тэмдэгт мєр доорх загвартай байна.
Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Northwind.mdb
Command ОбъектOleDbCommand объект нь ADO-гийн command объекттой маш тєстэй. Энэ нь SQL мэдэгдлvvдийг хадгалан єгєгдлийн эхтэй дахин дахин ажиллахад хэрэглэгдэнэ. OleDbCommand объект нь SELECT, INSERT, UPDATE, DELETE мэдэгдлvvдийг ажиллуулж чаддаг юм.
Жишээ
Доорх жишээнд INSERT мэдэгдлийг ашиглан Northwind баазын Customers хvснэгтэнд мөр нэмнэ.
1. Шинээр SQLTester solution vvсгэ.
2. Формдоо txtRows, txtSQL гэсэн 2 TextBox контрол нэмэн, дээрх загвартай болгоно. 3. Button-доо btnExecute гэсэн нэр єгєн, Click үзэгдэл дээр дараах кодыг бичнэ vv.
10
Visual Basic.NET
Private Sub btnExecute_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles btnExecute.Click
Dim oCmd As OleDb.OleDbCommand
Dim strConn As String
Try
'Холболтын тэмдэгт мөр
strConn = "Provider=sqloledb;"
strConn &= "Data Source=(local);"
strConn &= "Initial Catalog=Northwind;"
strConn &= "User ID=sa;"
strConn &= "Password=;"
' Command Объект vvсгэх
oCmd = New OleDb.OleDbCommand()
' Command Объектод хэрэглэгдэх Холболт хийх
oCmd.Connection = New OleDb.OleDbConnection(strConn)
' Холболтыг нээх
oCmd.Connection.Open()
' SQL-ийг TextBox-оос аван Command Объектод руу хийх
oCmd.CommandText = txtSQL.Text
' SQL-ийг ажиллуулан, нийт єєрчлєгдсєн бичлэгийн тоог TextBox-д оноох
txtRows.Text = oCmd.ExecuteNonQuery().ToString()
MessageBox.Show("SQL мэдэгдэл амжилттай биелэлээ ", "btnExecute_Click()")
' Холболтыг хаах
oCmd.Connection.Close()
Catch oExcept As Exception
txtRows.Text = 0.ToString()
MessageBox.Show("SQL ажиллах явцад алдаа гарлаа: " & oExcept.Message, _
"btnExecute_Click()")
11
Visual Basic.NET
End Try
End Sub
Command объектын ExecuteNonQuery method-ыг ажиллуулснаар єгєгдлийн баазад CommandText дах SQL мэдэгдэл маань хэрэгжинэ. єєрєєр хэлбэл єгєгдлийн баазад мєр нэмэх vйлдлийг хийнэ.
Та F5 товч даран программаа ажиллуулна. INSERT мэдэгдэл байгаа text box-д зєв INSERT, UPDATE, DELETE мэдэгдлvvдийг бичиж Execute SQL товчыг даран ажиллагааг нь шалгаарай.
Data Binding буюу єгєгдєл бэхлэх (Visual Basic .NET)
o Єгєгдлийг DataGrid-рvv бэхлэх
o Combo Box-уудтай ажиллах o Параметртэй query vvсгэх o Єгєгдлийг гараас бэхлэх
Єгєгдєл бэхлэх (Data binding) нь єгєгдлийн эхийг vvсгэх процесстой холбоотой ба автоматаар форм дээрх контролуудыг єгєгдлийн эхээр хангаж байдаг. Windows формууд єгєгдєл бэхлэлтийг хийж гvйцэтгэхдээ ADO.NET-тэй холбогдож ашигладаг. Та єгєгдєл бэхлэх vед холболт хийх, dataset vvсгэх зэрэг код бичих шаардлаггvй ба .NET framework єєрєє ADO.NET-д хэрэгтэй кодыг vvсгэдэг. Формыг єгєдєлтэй бэхлэсний дараа, форм дээрх контролуудыг єгєгдлийн тодорхой эльментvvдтэй бэхлэж чадна. Ихэнхи vед TextBox контролын Text property-г єгєгдлийн эхийн нэг баганатай бэхлэдэг билээ. Мєн Picturebox контролын зурагуудыг, контролын background болон бусад property-нуудыг бэхлэж болно. Єгєгдєл бэхлэлтийг Энгийн єгєгдєл бэхлэх, Комплекс єгєгдєл бэхлэх гэсэн 2 тєрєл байдаг. Энгийн єгєгдєл бэхлэх нь контрол руу дан элемент бэхлэхийг зєвшєєрдєг. Жишээ нь TextBox, Label контролуудыг єгєгдєлтэй бэхлэлт хийх. Комплекс єгєгдєл бэхлэх нь контрол руу нэгээс их элемент бэхлэхийг зєвшєєрдєг. Комплекс єгєгдєл бэхлэхийг зєвшєєрдєг контролуудад DataGrid, ComboBox, ListBox гэх мэт контролууд орно.
Єгєгдлийг DataGrid-рvv бэхлэхЄгєгдєл бэхлэхэд хэрэглэгдэх vндсэн чанарууд нь .NET-н орчинд хvснэгтийг Grid-д харуулахад илэрдэг. Ингээд хэрхэн DataGrid бvхий форм vvсгэн, єгєгдлийн баазтай холбох жишээ vзье. Эхлээд vндсэн алхмуудыг тодорхойлъё:
1. Windows Form байгуулах
2. DataSet-ийг vvсгэх болон бэлтгэх 3. DataGrid контролыг форм руу нэмээд, єгєгдєл рvv бэхэлнэ.
12
Visual Basic.NET
Windows Form байгуулах:
Доорх алхмуудыг даган хийснээр жишээний формоо байгуулах болно.
a. Visual Studio.NET–ийг нээж, New Project товчлуурыг сонгон
b. Windows Application-ийг Template-ээс сонгон, Name textbox-д DataBinding гэж нэр єгєн прожектоо vvсгэнэ.
c. Properties цонхон дах формын property-нуудаас Name property-д frmProducts, Text property-д Product Information.оноож єгнє.
DataSet-ийг vvсгэх болон бэлтгэх
o DataAdapter Wizard-ийг хэрэглэх
o DataSet класс vvсгэх
-DataAdapter Wizard-ийг хэрэглэх
Єгєгдлийн баазтай холболт хийхийн тулд OleDbDataAdapter component-ийг Toolbox цонхны Data tab-аас сонгон форм руу чирэх эсвэл давхар товшилт хийнэ. Энэ нь хэдэн алхам бvхий тохируулганы цонх дэлгэцэнд гаргана. DataAdapter нь єгєгдлийн баазаас єгєгдєл дамжуулах ба DataSet нь DataGrid-ийг бэхлэхэд хэрэглэгддэг билээ.
a. OleDbDataAdapter-ийг Toolbox цонхний Data tab-аас сонго
b. Тvvнийг форм руу чирээд орхих c. Data Adapter Configuration Wizard цонх гарч ирэх болно. d. Эхний дэлгэц нь мэдээлэлийн чанартай тул “Next” товч дарна. e. Дараагийн дэлгэцэнд та єєрийн хэрэглэх єгєгдлийн холболтыг хийж єгнє.
Хэрэв та New Connection товчлуурыг сонговол дараах дэлгэц гарч ирэх болно. Энэ дэлгэцнээс та data provider-ыг сонгох ба data provider-т хэрэгтэй мэдээлэлvvдийг бєглєх болно.
13
Visual Basic.NET
I. Та єєрийн хэрэглэх гэж буй SQL server-ийн нэрийг сонгоно. Энэ жишээнд (local) гэж сонгосон байна.
II. SQL server лvv холбогдоход шаардлагатай мэдээллийг (хэрэглэгчийн нэр, пасспорт) оруулна.
III. Northwind єгєгдлийн баазыг сонгоно. Энэ баазын Product хvснэгтээс бид мэдээлэл авах болно.
Жич: Хэрэв та MSAccess хэрэглэх гэж буй бол Provider tab-аас Microsoft Jet 4.0 OLE DB Provider сонгон, Connection tab-д єгєгдлийн баазын нэрийг сонгож єгнє.
f. Wizard-ын дараагийн алхамд Query Type сонгоход хэрэгтэй болно. Та vvнээс:
o Use SQL Statement –ийг сонгон SQL мэдэгдлийг байгуулж, o Create New Stored Procedure-аас wizard-аар stored procedure vvсгэн, o Use Existing Stored Procedures-ийг сонгон сервэр дэх єгєгдлийн баазад буй stored procedure-
yyдаас хэрэглэх боломжтой болно.
Use SQL Statement–ийг сонгон цааш vргэлжлvvлнэ.
14
Visual Basic.NET
b. Энэ дэлгэцэнд SQL мэдэгдэл бичих эсвэл Query Builder-ийг сонгон SQL мэдэгдлvvдийг байгуулж болно. Энэ жишээний хувьд дараах SQL мэдэгдлийг бичлээ.
c. SELECT ProductID, ProductName, UnitPrice, UnitsInStock
d. FROM Products
e. “Next” товчыг дарснаар энэхvv wizard-ийн тєгсгєлийн алхам руу очих ба “Finish” товчоор vйл явцыг дуусганаа. Vvний vр дvнд OleDbConnection1, OleDbDataAdapter1 объектууд Tray цонхон дээр нэмэгдсэн байх болно.
Жич: Энэ жишээнд OleDbDataAdapter-ийг ашигласан. Хэрэв та зєвхєн SQL Server ашиглах бол Sql* component-уудыг ашиглавал илvv vр дvнтэй байх болно.
-DataSet класс vvсгэх
Visual Studio.NET-д ємнє нь vvсгэсэн DataAdapter объектын query-д суурилан Dataset классыг vvсгэхэд маш хялбар байдаг. Dataset классыг vvсгэхдээ дараах алхмуудыг хэрэглэнэ.
a. Data ->Generate Dataset коммандыг VS.NET цэснээс сонгоно.
b. Generate Dataset гэсэн диалог цонх дэлгэцэнд гарч ирнэ. c. “New” option button-ийг сонгон, dsProducts гэсэн нэр єгнє. d. “OK” товчлуурыг дарснаар DataSet бvдvvвч тодорхойлолт бvхий файл ба класс зэргийг vvсгэнэ.
15
Visual Basic.NET
Эдгээр алхмуудыг гvйцэтгэсний дараа dsProducts1 контрол формын Tray дээр нэмэгдэх ба энэ контрол нь dsProducts.xsd файлыг зааж байдаг. dsProducts.xsd файл нь таны ємнє нь тодорхойлсон SQL мэдэгдлээс vvссэн хvснэгт, багануудыг агуулсан XML бvдvvвч тодорхойлолт юм.
DataGrid-ийг єгєгдлєєр дvvргэх
Юуны ємнє та DataGrid контролыг frmProducts формдоо байрлуулана. Уг контролыг сонгон Property цонхон дах DataSource property-д dsProducts1, DataMember property-д Products тус тус оноож єгнє.
Одоо бид DataGrid контролыг DataSet рvv бэхлэсэн байгаа боловч DataSet нь форм ачаалагдахад автоматаар єгєгдлєєр дvvргэгддэггvй. Иймд форм Load event-д дараах кодыг бичиж єгнє.
Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
' DataSet контролыг хоослох
dsProducts1.Clear()
' DataSet контролыг Products хvснэгтээс єгєгдлєєр дvvргэх
OleDbDataAdapter1.Fill(dsProducts1, "Products")
End Sub
Ингээд бид DataGrid контролыг дvvргэж чадах боллоо. Та одоо прожектоо ажиллуулан (F5) шалгаж vзнэ vv.
16
Visual Basic.NET
Combo Box-уудтай ажиллахБидний vvсгэсэн жишээ багахан хэмжээний єгєгдєлтэй vед тєвєггvй ажиллах боловч хэдэн мянган бичлэгтэй vед тийм ч тохиромжтой биш байх болно. Тиймд бvтээгдэхvvний тєрлийг combo box-оос сонгон, тухайн тєрлийн бvтээгдэхvvнvvдийг дэлгэцэнд DataGrid дээр харуулбал илvv тохиромжтой. Эхлээд combo box-ийг єгєгдлєєр дvvргээд, дараа нь combo box-ийг хэрэглэн дэлгэцэнд data grid-д харагдах єгєгдлийг хязгаарлая.
Хоёр дох Data Adapter, DataSet нэмэх
1. Дахин OleDbDataAdapter-ийг Toolbox-ийн Data tab-аас сонгон, форм дээр байрлуулна.
2. <Ємнєх жишээнд хэрэглэж байсан Northwind єгєгдлийн баазын холболтыг хэрэглэнэ. “Next” товч дарна.
3. “Use SQL Statements”-ийг сонгон, “Next” товч дарна. 4. Дараах SQL мэдэгдлийг бичнэ:
5. SELECT CategoryID, CategoryName FROM Categories
6. Энэ диалогоос “Advanced Options” товчлуурыг сонгоно. 7. “Generate Insert, Update, and Delete statements” сонголтыг арилгана. Учир нь бид зєвхєн combo box
дvvргэх гэж байгаа тул эдгээр коммандуудыг хэрэглэх шаардлагагvй.
“Finish” товчыг дарснаар OleDbDataAdapter-ыг vvсгэнэ.Одоо Data ->Generate Dataset коммандыг VS.NET цэснээс сонгон, DataSet-ийн нэрийг dsCat гэж єгнє vv.
Combo Box-ыг DataAdapter луу бэхлэх
1. Формд Combo box байрлуулан, идэвжvvл
2. Name property-д cboCategories 3. DataSource property-д dsCat1 4. DropDownStyle property-д DropDownList 5. DisplayMember property-д Categories.CategoryName. Энэ нь дэлгэцэнд харагдах багана ба data grid
контролын єгєгдлийг єєрчлєхєд хэрэглэгдэх багана утгаа авахад туслана. 6. ValueMember property-д Categories.CategoryID онооно. ValueMember property нь item сонгогдоход
жинхэнэ утгыг авна. єєрєєр хэлбэл CategoryName сонгогдоход харгалзах CategoryID-г энэ property-гоос авч чадна.
Combo Box-ыг єгєгдєлтэй болгохCombo Box-ыг єгєгдєлтэй болгохын тулд ємнє нь Grid-ийг єгєгдлєєр дvvргэхэд хэрэглэж байсан Load event дээр зарим код бичнэ.
Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
dsProducts1.Clear()
OleDbDataAdapter1.Fill(dsProducts1, "Products")
17
Visual Basic.NET
' Combo Box-д єгєгдєл дvvргэхэд хэрэглэгдэн DataSet-ыг бэлтгэх
dsCat1.Clear()
OleDbDataAdapter2.Fill(dsCat1, "Categories")
End Sub
Ингээд ComboBox-ыг єгєгдлєєр дvvргэх ажил маань дууслаа. :-) Одоо та F5 товч даран формоо ажиллуулахад дараах дvр зураг харагдах болно.
Параметртай Query vvсгэхОдоо бvгдээрээ тєрєл сонгогдоход data grid дээр харгалзах бvтээгдэхvvнvvдийг харуулж чаддаг болъё.
1. Data grid контролыг єгєгдєлжvvлдэг кодыг формын Load event-ээс хасна. Дараах кодыг формын Load event-ээс хасна уу.
2. dsProducts1.Clear()
3. OleDbDataAdapter1.Fill(dsProducts1, "Products")
4. OleDbDataAdapter1 объектын SelectCommand property-г єєрчлєн, CategoryID параметр авах боломжтой болгоно. OleDbDataAdapter1 объектыг сонгон Properties window (F4) дах SelectCommand property-гийн дэд property-нуудыг дэлгэнэ. CommandText property-г сонгон, Build (…) товчлуурыг дарснаар дэлгэцэнд Query Builder диалог гарч ирэх болно. WHERE буюу нєхцлийг нэмснээр дараах байдалтай харагдах болно.
5. SELECT ProductID, ProductName, UnitPrice, UnitsInStock
6. FROM Products
7. WHERE CategoryID = ?
OK товчлуурыг дарснаар єєрчлєлт маань хадгалагдах болно.
OleDbDataAdapter1 объектыг сонгон Data -> Generate Dataset менюг сонгон, Ok товчлуурыг дарснаар одоо байгаа dsProducts dataset-ээ дахин байгуулалт хийнэ.
8. Хэрэглэгч combo box-оос item сонгоход ажиллах код нэмэхЭхлээд cboCategories combo box дээр давхар товшилт хийн, SelectedIndexChanged event процедур vvсгэнэ. Энэ event нь combo box-оос item сонгох vед vvсдэг. Ингээд дараах кодыг бичнэ vv.
9. Private Sub cboCategories_SelectedIndexChanged( ByVal sender As System.Object, _
18
Visual Basic.NET
10. ByVal e As System.EventArgs) Handles cboCategories.SelectedIndexChanged
11.
12. With OleDbDataAdapter1.SelectCommand.Parameters
13. .Item(0).Value = cboCategories.SelectedValue
14. End With
15.
16. ' dataset-ийг цэвэрлэх
17. DsProducts1.Clear()
18. ' dataset-ийг параметрын утгыг хэрэглэх єгєгдєлжvvлэх
19. OleDbDataAdapter1.Fill(DsProducts1, "Products")
20. End Sub
Data adapter-ийн SelectCommand объектыг ашиглан тухайн Parameter объектыг дамжуулахад хэрэглэж байна. Энэ Parameter объектын Value property-д оноож буй combo box-ийн SelectedValue property нь ValueMember-ийн идэвхтэй байгаа утга (CategoryID)-г авна. Combo box-оос нэр сонгоход dataset нь тухайн тєрлєєр дvvргэгдэн, data grid-д автоматаар байрлана.
Хэрэв та бvх vйлдлийг зєв хийсэн бол F5 товч даран прожектоо ажиллуулаад combo box-оос тєрлийн нэр сонгон, datagrid харгалзах єгєгдлєєр дvvргэгдэж байхыг харах болно.
Єгєгдлийг гараас бэхлэхЯмар нэгэн Wizard хэрэглэхгvйгээр DataSet класс vvсгэн, Data grid болон бусад контролыг єгєгдлєєр дvvргэж болох ба энэ аргыг хэрэглэснээр маш уян хатан, илvv хурдан ажиллах программ хийх болно. Одоо ємнєх жишээтэй ижил прожект vvсгэе.
1. Та дахин шинэ DataBindGrid гэсэн прожект vvсгэнэ.
2. frmProducts гэсэн форм vvсгэнэ vv. 3. Label, ComboBox, DataGrid контролуудыг формд нэмнэ. 4. Тэдний нэрийг харгалзан Label1, cboCategories, grdProducts гэж єєрчлєнє. 5. Формын Load event-д дараах кодыг бичнэ.
Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Call ComboLoad()
End Sub
ComboLoad event нь cboCategories combo box-ийг DataTable классаас єгєгдлєєр дvvргэнэ.
Private Sub ComboLoad()
Dim da As OleDb.OleDbDataAdapter
Dim dt As DataTable = New DataTable()
Dim strSQL As String
19
Visual Basic.NET
Dim strConn As String
strConn = "Provider=sqloledb;Data
Source=(local);Initial Catalog=Northwind;User ID=sa"
strSQL = "SELECT CategoryId, CategoryName "
strSQL &= "FROM Categories"
Try
‘Data adapter vvсгэх
da = New OleDb.OleDbDataAdapter(strSQL, strConn)
‘DataTable-ийг єгєгдлєєр дvvргэх
da.Fill(dt)
With cboCategories
' эхлээд Property-нуудад утга онооно
.DisplayMember = "CategoryName"
.ValueMember = "CategoryId"
' тэгээд DataSource-ийг єгнє
.DataSource = dt
End With
Catch e As Exception
MessageBox.Show(e.Message)
End Try
End Sub
Жич: Хэрэв та Access єгєгдлийн бааз ашиглаж байгаа бол strConn тэмдэгт мєрєнд “Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb” гэж бичээрэй.
DisplayMember, ValueMember property-нуудад SQL мэдэгдэлд буй багануудын нэрийг єгєх ёстой. DisplayMember нь combo box-ийн дэлгэцэнд харагдах єгєгдлvvдийг авах баганыг зааж байдаг. Харин ValueMember property нь єєр баганы утгыг хадгалж байдаг combo box-ийн vл харагдах жагсаалт юм.
20
Visual Basic.NET
DataGrid-ийг дvvргэхCombo box-ын SelectedIndexChanged event-д дараах кодыг бичье:
Private Sub cboCategories_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles cboCategories.SelectedIndexChanged
Call GridLoad()
End Sub
GridLoad процедур нь combo box-оос сонгосон утгаар Grid-ийг дvvргэнэ.
Private Sub GridLoad()
Dim da As OleDb.OleDbDataAdapter
Dim dt As DataTable = New DataTable()
Dim strSQL As String
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=Northwind;User ID=sa"
strSQL = "SELECT ProductID, ProductName, UnitPrice, UnitsInStock "
strSQL &= "FROM Products "
strSQL &= "WHERE CategoryID = " & cboCategories.SelectedValue
Try
‘Data adapter vvсгэх
da = New OleDb.OleDbDataAdapter(strSQL, strConn)
‘DataTable-ийг єгєгдлєєр дvvргэх
da.Fill(dt)
grdProducts.PreferredColumnWidth = DataGrid.AutoColumnSize
grdProducts.DataSource = dt
Catch e As Exception
MessageBox.Show(e.Message)
End Try
End Sub
21
Visual Basic.NET
Connection ба Command Объектууд | дээшээ | DataReader Объект нvvр хуудас
ADO.NET DataReader Объект (Visual Basic .NET)
o DataReader объект, тvvнийг хэрэглэх
o List Box контолыг бvтээгдэхvvнээр дvvргэх o PDSAListItemNumeric класс o Combo box контролыг дvvргэх o Бvтээгдэхvvний мэдээллийг дэлгэцэнд гаргах
<>
DataReader объект, тvvнийг хэрэглэхADO.NET-д DataSet, DataTable, DataReader объектуудыг VB6-гийн RecordSet объектын оронд хэрэглэх ба DataReader объект нь forward-only тєрлийн cursor юм. DataReader объектод курсорын тєрлvvд болох SequentialAccess, KeyInfo, SchemaOnly, SingleResult, SingleRow тєрлvvдийг хэрэглэж болох боловч vр дvнг vзэхдээ зєвхєн дараагийнхыг vзэхийг зєвшєєрдєг. OleDbDataReader объект нь єгєгдлийн баазаас бичлэгvvдийг маш хурдан уншдаг давуу талтай.
DataReader объектыг ашиглан ListBox, ComboBox контролуудыг єгєгдлєєр дvvргэх жишээ vзье.
22
Visual Basic.NET
Одоо дээрх формын контролуудыг єгєгдлєєр дvvргэх жишээ vзье.
List Box контолыг бvтээгдэхvvнээр дvvргэх
Combo box контролыг дvvргэх Бvтээгдэхvvний мэдээллийг дэлгэцэнд гаргах
Private Sub frmProduct_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
' List Box контолыг бvтээгдэхvvнээр дvvргэх
ListLoad()
' Combo box контролуудыг дvvргэх
SupplierLoad()
CategoryLoad()
End Sub
23
Visual Basic.NET
List Box контолыг бvтээгдэхvvнээр дvvргэх Private Sub ListLoad()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
strConn = ConnectStringBuild()
strSQL = "SELECT ProductID, ProductName "
strSQL &= "FROM Products"
Try
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
.Connection.Open()
.CommandText = strSQL
oDR = .ExecuteReader(CommandBehavior.SequentialAccess)
End With
lstProducts.Items.Clear()
Do While oDR.Read()
oItem = New PDSAListItemNumeric()
With oDR
oItem.ID = CInt(.Item("ProductID"))
oItem.Value = .Item("ProductName").ToString()
End With
lstProducts.Items.Add(oItem)
Loop
If lstProducts.Items.Count > 0 Then
lstProducts.SetSelected(0, True)
End If
24
Visual Basic.NET
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
ExecuteReader method дуудагдснаар SELECT мэдэгдэл хэрэгжин, DataReader объект буцаж ирсэн утгыг заах болно. Давталтанд DataReader объектын бvх мєрийг Read method-ыг ашиглан уншина.
PDSAListItemNumeric классыг ашиглан List box-ийг дvvргэснээр ID-д харгалзах утгыг авах, давхардсан бvтээгдэхvvн нэмэхээс зайлс хийх болно.
Жич: Хэрэх танд дээрх чанар хэрэггvй бол та давталтанд дотор зєвхєн дараах ганц мєр кодыг хэрэглэж болно.
lstProducts.Items.Add(oDR.Item("ProductName"))
PDSAListItemNumeric класс
Дээрх кодонд ашиглагдсан PDSAListItemNumeric классыг хэрхэн vvсгэхийг vзье. Шинэ класс файлыг Project -> Add Class цэсийг сонгон clsListItems.vb гэсэн нэр єгнє vv. Тэгээд дараах кодыг бичнэ.
Public Class PDSAListItemNumeric
Private mstrValue As String
Private mintID As Integer
Public Sub New()
End Sub
Public Sub New(ByVal strValue As String, _
ByVal intID As Integer)
mstrValue = strValue
mintID = intID
End Sub
Property Value() As String
Get
Return mstrValue
End Get
Set(ByVal Value As String)
mstrValue = Value
25
Visual Basic.NET
End Set
End Property
Property ID() As Integer
Get
Return mintID
End Get
Set(ByVal Value As Integer)
mintID = Value
End Set
End Property
Public Overrides Function ToString() As String
Return mstrValue
End Function
End Class
Дээрх класс нь Value, ID гэсэн 2 property-тэй ба энэ нь текст болон тvлхvvр бvхий хvснэгтээс List box контролыг дvvргэхэд ашиглагдана. ToString method нь vндсэн Object єгєгдлийн тєрлєєс бvх классууд удамшуулж авдаг.
Combo box контролыг дvvргэх
Product форм дээрх 2 combo box-ыг Categories ба Suppliers-vvдээр дvvргэх ёстой.
Private Sub CategoryLoad()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim strSQL As String
Dim strConn As String
Dim oItem As PDSAListItemNumeric
strConn = ConnectStringBuild()
strSQL = "SELECT CategoryID, CategoryName "
strSQL &= "FROM Categories"
Try
26
Visual Basic.NET
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
.Connection.Open()
.CommandText = strSQL
' DataReader объектыг хаах vед холболтыг хаана.
oDR = .ExecuteReader(CommandBehavior.CloseConnection)
End With
Do While oDR.Read()
oItem = New PDSAListItemNumeric()
With oDR
oItem.ID = CInt(.Item("CategoryID"))
oItem.Value =.Item("CategoryName").ToString()
End With
cboCategory.Items.Add(oItem)
Loop
oDR.Close()
'oCmd.Connection.Close() –vvнийг бичих шаардлагагvй.
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
SupplierLoad() процедурыг дээрхтэй тєстэй байдлаар vvсгэнэ.
1. CategoryLoad процедурын хуулбарыг vvсгэн, нэрийг нь SupplierLoad гэж єєрчилнє.
2. SELECT мэдэгдэлд байгаа хvснэгт болон багануудын нэрийг солино. Хvснэгтийн нэрийг Suppliers, багануудын нэрийг SupplierID, CompanyName гэж єєрчилнє.
3. Бvх cboCategory combo box –ыг cboSupplier combo box болгон єєрчилнє.
27
Visual Basic.NET
Бvтээгдэхvvний мэдээллийг дэлгэцэнд гаргах
List box контролыг хэрхэн дvvргэх талаар vзсэн билээ. Одоо List box-оос Item сонгоход бусад контролуудыг дvvргэхийг vзье.
Формын design view горимд List box контрол дээр давхар товшилт хийн дараах vзэгдлийн процедур vvсгэнэ vv.
Private Sub lstProducts_SelectedIndexChanged( ByVal sender As Object, ByVal e As _
System.EventArgs) Handles lstProducts.SelectedIndexChanged
FormShow()
End Sub
Private Sub FormShow()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
strConn = ConnectStringBuild()
' List Box-оос Primary Key-г авах
oItem = CType(lstProducts.SelectedItem, PDSAListItemNumeric)
strSQL = "SELECT ProductID, ProductName, "
strSQL &= " SupplierID, CategoryID, "
strSQL &= " QuantityPerUnit, UnitPrice, "
strSQL &= " UnitsInStock, UnitsOnOrder, "
strSQL &= " ReorderLevel, Discontinued "
strSQL &= " FROM Products "
strSQL &= " WHERE ProductID = " & oItem.ID
Try
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
28
Visual Basic.NET
.Connection.Open()
.CommandText = strSQL
oDR = .ExecuteReader(CommandBehavior.SequentialAccess)
End With
If oDR.Read() Then
With oDR
txtID.Text = .Item("ProductID").ToString()
txtName.Text = .Item("ProductName").ToString()
strID = .Item("SupplierID").ToString()
Call FindItem(cboSupplier, strID)
strID = .Item("CategoryID").ToString()
Call FindItem(cboCategory, strID)
txtQty.Text = .Item("QuantityPerUnit").ToString()
txtPrice.Text = .Item("UnitPrice").ToString()
txtInStock.Text = .Item("UnitsInStock").ToString()
txtOnOrder.Text = .Item("UnitsOnOrder").ToString()
txtReorder.Text = .Item("ReorderLevel").ToString()
chkDisc.Checked = CType(.Item("Discontinued"), Boolean)
End With
End If
oDR.Close()
oCmd.Connection.Close()
Catch oException As Exception
MessageBox.Show(oException.Message)
End Try
End Sub
Дараах FindItem функц нь параметрээр дамжиж ирсэн ID-г combo box-оос хайна. Хэрэв олдсон бол Combo box-ын тухайн байрлал нь сонгогдон харагдах болно.
Private Sub FindItem(ByVal cboCombo As ComboBox, ByVal strID As String)
Dim intLoop As Integer
Dim boolFound As Boolean
29
Visual Basic.NET
Dim oItem As PDSAListItemNumeric
oItem = New PDSAListItemNumeric()
For intLoop = 0 To cboCombo.Items.Count - 1
oItem = CType(cboCombo.Items(intLoop), PDSAListItemNumeric)
If oItem.ID = CInt(strID) Then
cboCombo.SelectedIndex = intLoop
boolFound = True
Exit For
End If
Next
If Not boolFound Then
cboCombo.SelectedIndex = -1
End If
End Sub
Єгєгдєл бэхлэх | дээшээ | DataSet Объект нvvр хуудас
ADO.NET DataTable ба DataSet (Visual Basic .NET)
o DataTable ба DataSet
o DataTable объектыг хэрэглэх o DataSet объектыг хэрэглэх o Єєгєгдєл нэмэх, єєрчлєх, устгах
DataTable ба DataSetDataSet объект нь санах ой дах єгєгдлийн бааз билээ. Энэ объект нь SQL мэдэгдлээр дамжин єгєгдєлтэй харьцаж байдаг DataTable объектуудыг агуулдаг. DataSet нь єгєгдлийг XML-ээр хадгалдаг. Мєн бvдvvвч мэдээллийг агуулж, DataTable-vvдийн хоорондох relationship-ийг хадгалж байдаг. Та єгєгдлийг нэмэх, засварлах, устгах vйлдлvvдийг DataSet-ээр хийж чадна.
Энэ хичээлээр DataTable. DataSet объектуудыг ашиглан єгєгдєл оруулах форм хийхийг vзье.
30
Visual Basic.NET
Зураг 1.
Бидний жишээнд vзэх формын Load vзэгдлийн процедурт дараах кодыг бичиж єгнє.
Private Sub frmProduct_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
' Suppliers (Нєєц) combo box-ийг дvvргэх
SupplierLoad()
' Categories (Категори) combo box-ийг дvvргэх
CategoryLoad()
' DataSet-ийг vvсгэх
DataSetCreate()
' Products (бvтээгдэхvvн)–ийн List Box-ийг дvvргэх
ListLoad()
End Sub
DataTable объектыг хэрэглэхЗураг1 дээрх Suppliers, Categories combo box-уудыг DataTable объект ашиглан дvvргэе.
Private Sub SupplierLoad()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oTable As DataTable = New DataTable()
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
Dim intLoop As Integer
31
Visual Basic.NET
strConn = ConnectStringBuild()
strSQL = "SELECT SupplierID, CompanyName "
strSQL &= "FROM Suppliers"
Try
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
oAdapter.Fill(oTable)
For intLoop = 0 To oTable.Rows.Count - 1
oItem = New PDSAListItemNumeric()
With oTable.Rows(intLoop)
oItem.Value = .Item("CompanyName").ToString()
oItem.ID = CInt(.Item("SupplierID"))
End With
cboSupplier.Items.Add(oItem)
Next
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
Та combo box-ийг дvvргэхийн тулд OleDbDataAdapter-ийг ашиглан DataTable объектыг єгєгдлєєр дvvргэнэ. Бидний мэдэх PDSAListItemNumeric классыг ашиглан Suppliers хvснэгтээс Combo box контролыг primare key, дэлгэцэнд харагдах утгаар дvvргэнэ.
Дараах функц нь єгєгдлєєр хангагчтай холбогдох тэмдэгт мєр буцаана. Та сvлжээ ашиглан SQL Server-тэй холбогдох бол дараах функцыг єєрчлєн бичээрэй.
Private Function ConnectStringBuild() As String
Dim strConn As String
strConn = "Provider=sqloledb;"
strConn &= "Data Source=(local);"
strConn &= "Initial Catalog=Northwind;"
32
Visual Basic.NET
strConn &= "User ID=sa"
Return strConn
End Function
Хэрэв танд SQL Server байхгvй бол Microsoft Access-ийн NorthWind жишээ єгєгдлийн баазыг ашиглаж болно. Дараах байдлаар тодорхойлох ба та файлынхаа замыг засаж бичээрэй.
Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Access\Northwind.mdb
Categories combo box-ыг дээрхтэй тєстэй байдлаар дvvргэнэ.
1. SupplierLoad процедурын хуулбарыг vvсгэн, нэрийг нь CategoryLoad гэж єєрчилнє.
2. SELECT мэдэгдэлд байгаа хvснэгт болон багануудын нэрийг солино. Хvснэгтийн нэрийг Categories, багануудын нэрийг
3. CategoryID, CategoryName гэж єєрчилнє. 4. PDSAListItemNumeric классаас авч буй багануудын нэрийг єєрчилнє 5. cboSupplier combo box–ыг cboCategory combo box болгон єєрчилнє.
DataSet объектыг хэрэглэхDataTable объект нь дан хvснэгтийн єгєгдєл байдаг ба combo box болон list box-уудыг ачаалахад голчлон хэрэглэгддэг. DataSet нэг болон тvvнээс их DataTable-ийг багтаадаг ба єгєгдєл оруулах формд DataSet vvсгэснээр List box-ыг єгєгдлєєр дvvргэх, нэмэх, засах, устгах vйлдлvvдийг гvйцэтгэхэд туслана.
Юуны ємнє формд хэрэглэгдэх глобал хувьсагч зарлая. Private хувьсагч нь зєвхєн формд хэрэглэгдэнэ гэдгийг тодорхойлдог.
Public Class frmProduct
Inherits System.Windows.Forms.Form
Private moDS As DataSet
Дараах DataSet vvсгэх процедурыг бичье.
Private Sub DataSetCreate()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim strSQL As String
Dim strConn As String
' Холболтын тэмдэгт мєрийг авах
strConn = ConnectStringBuild()
' SQL тэмдэгт мєр vvсгэх
33
Visual Basic.NET
strSQL = "SELECT * FROM Products"
moDS = New DataSet()
Try
' Шинэ Data Adapter vvсгэх
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
' DataSet-ийг єгєгдсєн хvснэгтээр Adapter-аас дvvргэх
oAdapter.Fill(moDS, "Products")
' Primary Key vvсгэх
With moDS.Tables("Products")
.PrimaryKey = New DataColumn() {.Columns("ProductID")}
End With
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
Дээрх код бидний ємнє vvсгэсэн DataTable-ийг vvсгэхтэй тєстэй. Энд шинэ “Products” DataTable-ийг DataSet-д vvсгэж байна. Та энэ нэрийг ашиглан DataSet-ийн Tables collection дах хvснэгттэй холбогдоно. Жишээ нь: oDS.Tables(“Products”) нь DataAdapter-аар дvvргэгдсэн DataTable объект буцаадаг.
Хэрэв та DataSet-ийн DataTable-ээс хайлт хийх бол DataTable-д PrimaryKey (тvлхvvр талбар) баганыг тодорхойлож єгєх хэрэгтэй. PrimaryKey–д нэг болон хэд хэдэн багана тодорхойлж єгч болно. Иймд PrimaryKey нь DataColumn-ын массив тєрєлтэй. Бидний жишээнд нэг л багана тодорхойлох учир нэг урттай DataColumn массивыг PrimaryKey-д оноож єгнє.
ListBox-ыг DataSet-ээс дvvргэх нь Private Sub ListLoad()
Dim oItem As PDSAListItemNumeric
Dim oRow As DataRow
LstProducts.Items.Clear()
' DataRow болгоныг давталтаар унших
For Each oRow In moDS.Tables("Products").Rows
' Шинэ PrimaryKey болон тайлбарыг агуулах Item vvсгэх
oItem = New PDSAListItemNumeric()
34
Visual Basic.NET
With oItem
.ID = CInt(oRow.Item("ProductID"))
.Value = oRow.Item("ProductName").ToString()
End With
' Хvснэгтэнд шинэ мєр нэмэхэд тухайн талбарын утга нь автоматаар нэмэгдэнэ.
moDS.Tables("Products").Columns("ProductID").AutoIncrement = True
' Item-ыг list box-руу нэмэх
lstProducts.Items.Add(oItem)
Next
lstProducts.SetSelected(0, True)
End Sub
DataSet-ээс тодорхой мєрийг хайхБvтээгдэхvvний жагсаалт дээр товшилт хийхэд тухайн бvтээгдэхvvний талаар дэлгэрэнгvй мэдээллийг форм дээрх контролуудад гаргаж суръя. Эхлээд та List box дээр товшилт хийхэд биелэх кодыг бичье.
Формын дизайн горим vед давхар товшилт хийн SelectedIndexChanged vзэгдлийн процедурыг vvсгэнэ. Тэгээд дараах кодыг бичнэ.
Private Sub lstProducts_SelectedIndexChanged( ByVal sender As Object, ByVal e As _
System.EventArgs) Handles lstProducts.SelectedIndexChanged
FormShow()
End Sub
Дараах FormShow процедур нь DataSet-ээс тодорхой мєрийг хайн, тэр мєрєєс форм дээрх контролуудыг мэдээллээр дvvргэнэ.
Private Sub FormShow()
Dim oDR As DataRow
Dim oItem As PDSAListItemNumeric
Dim strID As String
' List Box-оос Primary Key-г авах
oItem = CType(lstProducts.SelectedItem, PDSAListItemNumeric)
' DataSet-ээс мєр хайх
35
Visual Basic.NET
With moDS.Tables("Products").Rows
oDR = .Find(oItem.ID)
End With
' Өгєгдлийг дэлгэцэнд гаргах
txtID.Text = oDR("ProductID").ToString()
txtName.Text = oDR("ProductName").ToString()
strID = oDR("SupplierID").ToString()
Call FindItem(cboSupplier, strID)
strID = oDR("CategoryID").ToString()
Call FindItem(cboCategory, strID)
txtQty.Text = oDR("QuantityPerUnit").ToString()
txtPrice.Text = oDR("UnitPrice").ToString()
txtInStock.Text = oDR("UnitsInStock").ToString()
txtOnOrder.Text = oDR("UnitsOnOrder").ToString()
txtReorder.Text = oDR("ReorderLevel").ToString()
chkDisc.Checked = CType(oDR("Discontinued"). Boolean)
End Sub
Private Sub FindItem(ByVal cboCombo As ComboBox, _
ByVal strID As String)
Dim intLoop As Integer
Dim boolFound As Boolean
Dim oItem As PDSAListItemNumeric
oItem = New PDSAListItemNumeric()
For intLoop = 0 To cboCombo.Items.Count - 1
oItem = CType(cboCombo.Items(intLoop), PDSAListItemNumeric)
If oItem.ID = CInt(strID) Then
cboCombo.SelectedIndex = intLoop
boolFound = True
Exit For
End If
Next
If Not boolFound Then
36
Visual Basic.NET
cboCombo.SelectedIndex = -1
End If
End Sub
List box нь зєвхєн Object єгєгдлийн тєрєлтэй байдаг учир Ctype функцыг хэрэглэн PDSAListItemNumeric тєрєл рvv хєрвvvлнэ. Та энэ хєрвvvлэгдсэн тєрлийн ID property-гоос primary key-г авна. Find method нь ID-д харгалзах дан DataRow объектыг буцаадаг. DataRow объектоос багана болгоны утгыг авч контролыг єгєгдлєєр дvvргэж байна.
DataSet объектыг ашиглан єгєгдлийг єєрчлєх
o DataSet-д мєр нэмэх
o DataSet-ийн мєрvvдийг шинэчлэн хадгалах o DataSet дэх мєрийг устгах
DataSet-д мєр нэмэхБидний хийж буй формын Add товчлуурын Click vзэгдлийн процедурт дараах кодыг бичье.
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles btnAdd.Click
DataAdd()
End Sub
Та хvснэгт рvv мєр нэмэх vйлдлийг OleDbCommand объектоос INSERT мэдэгдэл, мєн DataSet объектыг ашиглан хийнэ. DataSet нь єгєгдлийн баазтай vл холбогдсон учир та эхлээд DataSet дээр єгєгдєл нэмнэ. Дараа нь баазтай холболт хийн, OleDbCommandBuilder объектыг INSERT мэдэгдлийг байгуулна.
Private Sub DataAdd()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oBuild As OleDb.OleDbCommandBuilder
Dim oDR As DataRow
Dim strSQL As String
Dim strConn As String
' DataSet-ээс DataRow объектыг шинээр vvсгэнэ
oDR = moDS.Tables("Products").NewRow()
oDR.BeginEdit()
' Шинэ єгєгдлийг мєр лvv хийх
37
Visual Basic.NET
oDR("ProductName") = txtName.Text
oDR("SupplierID") = CType(cboSupplier.SelectedItem, PDSAListItemNumeric).ID
oDR("CategoryID") = CType(cboCategory.SelectedItem, PDSAListItemNumeric).ID
oDR("QuantityPerUnit") = txtQty.Text
oDR("UnitPrice") = CDec(txtPrice.Text)
oDR("UnitsInStock") = CShort(txtInStock.Text)
oDR("UnitsOnOrder") = CShort(txtOnOrder.Text)
oDR("ReorderLevel") = CShort(txtReorder.Text)
oDR("Discontinued") = CBool(chkDisc.Checked)
' Нэмэх vйлдэл дууссаныг мэдэгдэх
oDR.EndEdit()
' DataRow-ийг DataSet рvv нэмэх
moDS.Tables("Products").Rows.Add(oDR)
Try
' Холболтын тэмдэгт мєрийг авах
strConn = ConnectStringBuild()
' SQL тэмдэгт мєр
strSQL = "SELECT * FROM Products "
' DataAdapter-ийг шинээр vvсгэх
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
' Adapter-аас CommandBuild vvсгэх
' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг
oBuild = New OleDb.OleDbCommandBuilder(oAdapter)
' Insert Command объектыг авах
oAdapter.InsertCommand = oBuild.GetInsertCommand()
' INSERT мэдэгдэл Adapter-аар дамжин хэрэгжинэ.
oAdapter.Update(moDS, "Products")
' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ.
38
Visual Basic.NET
moDS.AcceptChanges()
' Холболтыг хаах
oAdapter.InsertCommand.Connection.Close()
' DataSet-ийг дахин vvсгэх
DataSetCreate()
' List box- ийг дахин vvсгэх
ListLoad()
Catch oException As Exception
MessageBox.Show(oException.Message)
End Try
End Sub
Өгєгдлийн бааз руу мєр нэмэхийн тулд эхлээд шинэ мєрийг DataSet-ийн DataTable-д нэмнэ. Шинээр нэмэгдсэн мєрєнд BeginEdit method-оор багануудад єгєгдлvvдийг байрлуулах буюу єгєгдлийг єєрчлєх боломжтой болно. EndEdit method-оор баганануудыг Datarow рvv хадгална. Add method-ын тусламжтайгаар шинэ DataRow-ыг DataTable рvv нэмнэ.
DataAdapter-аас Builder объектыг OledbCommandBuilder байгуулагчаар дамжуулан vvсгэж байна. Ингэснээр GetInsertCommand method-ыг ашиглан INSERT мэдэгдлийг CommandBuilder объектоос авч чадна. Энэ INSERT мэдэгдэл нь дараах хэлбэртэй байдаг:
INSERT INTO "Products"( "ProductName" , "SupplierID" , "CategoryID" , "QuantityPerUnit" ,
"UnitPrice" , "UnitsInStock" , "UnitsOnOrder" , "ReorderLevel" , "Discontinued" )
VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? )
Adapter-ын Update method-ын тусламжтайгаар єгєгдєл нэмэгдэх буюу INSERT мэдэгдэл хэрэгжинэ.
DataSet-ийн мєрvvдийг шинэчлэн хадгалахБидний хийж буй формын Update товчлуурын Click vзэгдлийн процедурт дараах кодыг бичье.
Private Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles btnUpdate.Click
DataUpdate()
End Sub
Та DataSet-ийн мєрvvдийг шинэчлэн хадгалахын тулд тухай мєрийг хайж олоод, баганууд дах єгєгдлийг єєрчлєн, DataAdapter ба CommandBuilder объектыг байгуулан, UPDATE мэдэгдлийг ашиглан єгєгдлийг хадгалах болно.
39
Visual Basic.NET
Private Sub DataUpdate()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oBuild As OleDb.OleDbCommandBuilder
Dim oDR As DataRow
Dim strSQL As String
Dim intID As Integer
Dim strConn As String
' List Box-оос Primary Key-г авах
intID = CType(lstProducts.SelectedItem, PDSAListItemNumeric).ID
' Шинэчлэх мєрийг хайх
oDR = moDS.Tables("Products").Rows.Find(intID)
' Засварлаж эхлэх
oDR.BeginEdit()
' Мєр лvv шинэ єгєгдлийг нэмэх
oDR("ProductName") = txtName.Text
oDR("SupplierID") = CType(cboSupplier.SelectedItem, PDSAListItemNumeric).ID
oDR("CategoryID") = CType(cboCategory.SelectedItem, PDSAListItemNumeric).ID
oDR("QuantityPerUnit") = txtQty.Text
oDR("UnitPrice") = CDec(txtPrice.Text)
oDR("UnitsInStock") = CShort(txtInStock.Text)
oDR("UnitsOnOrder") = CShort(txtOnOrder.Text)
oDR("ReorderLevel") = CShort(txtReorder.Text)
oDR("Discontinued") = CBool(chkDisc.Checked)
' Засварлалтыг дуусгах
oDR.EndEdit()
Try
' Холболтын тэмдэгт мєрийг авах
strConn = ConnectStringBuild()
40
Visual Basic.NET
' SQL тэмдэгт мєр
strSQL = "SELECT * FROM Products "
' DataAdapter-ийг шинээр vvсгэх
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
' Adapter-аас CommandBuild vvсгэх
' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг
oBuild = New OleDb.OleDbCommandBuilder(oAdapter)
' Update Command объектыг авах
oAdapter.UpdateCommand = oBuild.GetUpdateCommand()
' UPDATE мэдэгдэл Adapter-аар дамжин хэрэгжинэ.
oAdapter.Update(moDS, "Products")
' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ
moDS.AcceptChanges()
' Холболтыг хаах
oAdapter.UpdateCommand.Connection.Close()
' List box- ийг дахин vvсгэх
ListLoad()
Catch oException As Exception
MessageBox.Show(oException.Message)
End Try
End Sub
DataSet дэх мєрийг устгахБидний хийж буй формын Delete товчлуурын Click vзэгдлийн процедурт дараах кодыг бичье.
Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles btnDelete.Click
DataDelete()
End Sub
41
Visual Basic.NET
Private Sub DataDelete()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oBuild As OleDb.OleDbCommandBuilder
Dim oDR As DataRow
Dim strSQL As String
Dim strConn As String
Dim intID As Integer
' Холболтын тэмдэгт мєрийг авах
strConn = ConnectStringBuild()
' List Box-оос Primary Key-г авах
intID = CType(lstProducts.SelectedItem, PDSAListItemNumeric).ID
' Устгах мєрийг хайх
oDR = moDS.Tables("Products").Rows.Find(intID)
' DataRow-ийг устгасан гэж тэмдэглэх
oDR.Delete()
Try
' SQL тэмдэгт мєр
strSQL = "SELECT * FROM Products "
' DataAdapter-ийг шинээр vvсгэх
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
' Adapter-аас CommandBuild vvсгэх
' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг
oBuild = New OleDb.OleDbCommandBuilder(oAdapter)
' Delete Command объектыг авах
oAdapter.DeleteCommand = oBuild.GetDeleteCommand()
' DELETE мэдэгдэл Adapter-аар дамжин хэрэгжинэ.
oAdapter.Update(moDS, "Products")
' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ
moDS.AcceptChanges()
42
Visual Basic.NET
' Холболтыг хаах
oA
43