Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to ADO.NET

Similar presentations


Presentation on theme: "Introduction to ADO.NET"— Presentation transcript:

1 Introduction to ADO.NET

2 ADO.NET Objects .NET Applications Data Set Data Reader Command Object
Connection Object Managed Data Provider (OLEDB) Database

3 Connection with a Connection Object
A connection object represents a unique session with a data source. Connection string: database, OLE DB provider, password, if any, security, etc. Use the Open/Close method to open/close a connection. Manage transaction: BeginTransaction(), Commit, rollBack.

4 Connection String Containing information about database, OLE DB provider, password, if any, security, etc. For Jet database: Provider=Microsoft.Jet.OLEDB.4.0;Persist Security info = False;Data Source=c:\ …\Nwind.mdb

5 Data Link Properties (Under the Advanced Tab of the Connection Dialog Window)
Access permissions Read—Read only. ReadWrite—Read and write. Share Deny None—Neither read nor write access can be denied to others. Share Deny Read—Prevents others from opening in read mode. Share Deny Write—Prevents others from opening in write mode. Share Exclusive—Prevents others from opening in read/write mode. Write—Write only.

6 Providers MSDASQL Microsoft.Jet.OLEDB.3.51 Microsoft.Jet.OLEDB.4.0
Microsoft OLE DB Provider for ODBC Microsoft.Jet.OLEDB.3.51 Microsoft.Jet.OLEDB.4.0 MSDAORA – For Oracle SQLOLEDB – Microsoft SQL Server

7 Connection Object Basic Methods: Open, Close BeginTransaction Example:
dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" dim objConn as new OledbConnection(strConn) objConn.open() Basic Methods: Open, Close BeginTransaction

8 Command Object The command object allows us to execute a SQL statement. Properties: CommandType: SQL or stored procedure CommandText: SQL statement Connection Basic Methods: ExecuteReader: Creates a DataReader object that contains the results of the query. ExecuteNonQuery: Execute SQL’s INSERT, DELETE, UPDATE statements.

9 ExecuteReader Example
dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" dim objConn as new OledbConnection(strConn) dim strSQL as string = "select * from customer;" dim objComm as new OledbCommand(strSQL,objConn) dim Results as string objConn.open() dim objDataReader as oledbDataReader objDataReader=objComm.executeReader()

10 Import NameSpace The Imports statement must appear before all other declarations in a file and cannot appear inside a class or module declaration. Imports System.Data.OleDb Public Class Form1

11 DataReader Object It is read-only and forward-only cursor.
Basic Methods: Read: Reads the current record and advances the pointer to the next record. Close: Closes the dataReader.

12 Read Records in a DataReader
dim Results as string do while objDataReader.Read()=true Results+=objDataReader("cid") + “ “ + objDataReader("Cname") + vbCrLF loop Textbox1.text=Results Note: objDataReader.Item(0) Note: objDataReader.Item(“cid”)

13 Add Items from a DataReader to a Listbox
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) Dim strSQL As String = "select cname from customer;" Dim objComm As New OleDbCommand(strSQL, objConn) objConn.Open() Dim objDataReader As OleDbDataReader objDataReader = objComm.ExecuteReader() Do While objDataReader.Read() = True LISTBOX1.Items.Add(objDataReader("cname")) Loop Note: 1. Listbox is not bound. 2. SelectedItem

14 To Reuse a DataReader objDataReader.Close()
objDataReader = objComm.ExecuteReader()

15 Error Handling Try objConn.Open() Dim objDataReader As OleDbDataReader
objDataReader = objComm.ExecuteReader() Do While objDataReader.Read() = True Results += objDataReader("cid") + " " + objDataReader("Cname") + vbCrLf Loop TextBox1.Text = Results objConn.Close() Catch except As System.Exception MessageBox.Show(except.Message) End Try

16 Possible Database Errors
SQL syntax errors Database connection not open Violate database constraints Referential integrity Field data type and length Primary key constraint

17 ExecuteNonQuery Example
dim strSQLUpd as string="Update customer set rating = ‘A’” strSQLUpd=strSQLUpd & " where cname='" & CnameList.selectedItem.text & "'“ Dim objCommUpd As New OleDbCommand(strSQLUpd, objConn) objCommUpd.ExecuteNonQuery()

18 Demo Create a project that do the following tasks:
Use a DataReader to retrieve customer IDs and populate a listbox. Select a new rating from radio buttons for the selected customer. Update customer’s rating using the ExecuteNonQuery method of a Command object.

19 Declare OleDB objects and create listbox
Imports System.Data.OleDb Public Class Form3 Inherits System.Windows.Forms.Form Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) Dim strSQL As String = "select cid from customer;" Dim objComm As New OleDbCommand(strSQL, objConn) Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objConn.Open() Dim objDataReader As OleDbDataReader objDataReader = objComm.ExecuteReader() Do While objDataReader.Read() = True ListBox1.Items.Add(objDataReader("cid")) Loop objConn.Close() End Sub

20 Update customer rating
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click objConn.Open() Dim newRating As String If RadioButton1.Checked = True Then newRating = "A" ElseIf RadioButton2.Checked Then newRating = "B" Else newRating = "C" End If Dim strSQLUpd As String = "Update customer set rating = '" & newRating & "'" strSQLUpd = strSQLUpd & " where cid='" & ListBox1.SelectedItem & "'" Dim objCommUpd As New OleDbCommand(strSQLUpd, objConn) objCommUpd.ExecuteNonQuery() objConn.Close() End Sub

21 Use Command Object’s ExecuteNonQuery to Insert A New Record
Create unbound text boxes to enter new record. Add an Insert button with the following handler Dim strSQLInsert As String strSQLInsert = "Insert into Customer values ('" strSQLInsert = strSQLInsert & TextBox1.Text & "','" & TextBox2.Text & "','" strSQLInsert = strSQLInsert & TextBox3.Text & "','" & TextBox4.Text & "')" Dim objCommInsert As New OleDbCommand(strSQLInsert, objConn) objCommInsert.ExecuteNonQuery()

22 DataSet Object A DataSet object can hold several tables and relationships between tables. A DataSet is a set of disconnedted data. Data is extracted from the database and stored in the DataSet object. Updates to the DataSet must copy back to the database to make the changes permanent.

23 DataSet and Related Objects
DataSet: Can contain multiple tables and relationships. DataTable object: Represents a table in the dataset. DataAdapter: This the object used to pass data between the database and the dataset. The Fill method copies the data into the dataset, and the Update method copies the updates back into the database. DataView: This represents a specific view of the DataTables held in the dataset.

24 DataSet and Related Objects
DataView DataSet DataTable DataTable Command DataAdapter Connection

25 Structure of a Dataset Dataset Tables Data table Rows Data Row Columns
Data Column Constraints Relations Constraint Data Relation

26 Reading Data into a Table
dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" dim objConn as new OledbConnection(strConn) dim strSQL as string = "select * from customer;" dim objDataSet as new Dataset() dim objAdapter as new OledbDataAdapter(strSQL, objConn) objAdapter.Fill(objDataSet, "Cust")

27 Binding a Table in a Dataset to a DataGrid
Imports System.Data.OleDb Public Class Form4 Inherits System.Windows.Forms.Form Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) Dim objDataSet As New DataSet() Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strSQL As String = "select * from customer;" Dim objAdapter As New OleDbDataAdapter(strSQL, objConn) objAdapter.Fill(objDataSet, "Cust") DataGrid1.DataSource = objDataSet DataGrid1.DataMember = "Cust" End Sub

28 DataView Object The DataView object exposes a complete table or a subset of the records from a table. Table’s DefaultView property: Dim ObjDataView As New DataView() ObjDataView.Table = objDataSet.Tables("Cust") Or: ObjDataView = objDataSet.Tables("Cust").DefaultView DataView can be used as a DataSource in data binding.

29 Data Binding with DataView Object
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) Dim objDataSet As New DataSet() Dim strSQL As String = "select * from customer;" Dim objAdapter As New OleDbDataAdapter(strSQL, objConn) objAdapter.Fill(objDataSet, "Cust") Dim ObjDataView As New DataView() ObjDataView = objDataSet.Tables("Cust").DefaultView DataGrid1.DataSource = ObjDataView

30 Accessing Records in DataView
Using DataView and DataRowView object’s Item property: objdataView = objDataSet.Tables("customer").DefaultView TextBox1.Text = objdataView.Item(rowIndex).Item(0) TextBox2.Text = objdataView.Item(rowIndex).Item(1) Move to the next record: rowIndex += 1 TextBox1.Text = objdataView.Item(rowIndex).Item(0) TextBox2.Text = objdataView.Item(rowIndex).Item(1)

31 Selecting a Subset of Records with DataView’s RowFilter Property
objDataView.RowFilter = criteria

32 DataView Example Dim ObjDataView As New DataView()
Dim newRating As String If RadioButton1.Checked = True Then newRating = "A" ElseIf RadioButton2.Checked Then newRating = "B" Else newRating = "C" End If ObjDataView.Table = objDataSet.Tables("Cust") ObjDataView.RowFilter = "rating='" & newRating & "'" DataGrid1.Visible = True DataGrid1.DataSource = ObjDataView

33 Defining an Adapter without A Command Object
dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" dim objConn as new OledbConnection(strConn) dim strSQL as string = "select * from customer;" dim objDataSet as new Dataset() dim objAdapter as new OledbDataAdapter(strSQL, objConn) objAdapter.Fill(objDataSet, "Cust")

34 Defining an Adapter with A Command Object
dim strSQLCust as string = "select * from customer;" dim objComm as new OledbCommand() dim objAdapter as new OledbDataAdapter() dim objDataSet as new Dataset() objComm.Connection=objConn objComm.CommandType=COmmandType.Text objComm.CommandText=strSQLCust objAdapter.SelectCommand=objComm objConn.open() objAdapter.Fill(objDataSet, "Customer") Note:Adapter has SelectCommand, InsertCommand, DeleteCommand, UpdateCommand properties (Check Object Browser).

35 Creating Multiple Tables in A DataSet
dim strSQLCust as string = "select * from customer;" dim strSQLOrder as string ="select * from orders;" dim objComm as new OledbCommand() dim objAdapter as new OledbDataAdapter() dim objDataSet as new Dataset() objComm.Connection=objConn objComm.CommandType=COmmandType.Text objComm.CommandText=strSQLCust objAdapter.SelectCommand=objComm objConn.open() objAdapter.Fill(objDataSet, "Customer") objComm.COmmandText=strSQLOrder objAdapter.Fill(objDataSet, "Orders")

36 Binding Multiple Tables to a DataGrid (Example 1)
DataGrid1.DataSource = objDataSet

37 Binding Multiple Tables to a DataGrid (Example 2)
Dim ObjDataView As New DataView() Dim TableName As String If RadioButton1.Checked = True Then ObjDataView = objDataSet.Tables("Customer").DefaultView Else ObjDataView = objDataSet.Tables("Orders").DefaultView End If DataGrid1.DataSource = ObjDataView

38 Adding Relationship to a Dataset
The Dataset object has a Relations property. It is a collection of DataRelations. We can use a relationship to enforce the referential integrity. To define a DataRelation: DataRelObj=DataRelation(RelationName, ParentTable Field, ChildTableField) Dim objRel As DataRelation objRel = New DataRelation("custOrder", objDataset.tables("customer").columns("cid"), objDataset.tables("orders").columns("cid")) Adding a relation to the dataset: objDataSet.Relations.Add(objRel)

39 Creating a Hierarchical DataGrid
Dim objRel As DataRelation objRel = New DataRelation("custOrder", objDataSet.Tables("customer").Columns("cid"), objDataSet.Tables("orders").Columns("cid")) objDataSet.Relations.Add(objRel) DataGrid1.DataSource = objDataSet.Tables("customer")

40 DataTable’s Rows Property
This is a collection of all the records in a table, a collection of DataRow objects. DataRow object’s properties and methods.

41 Accessing a Record with Index
objAdapter.Fill(objDataSet, "Customer") TextBox1.Text = objDataSet.Tables("Customer").Rows(rowIndex).Item(0) TextBox2.Text = objDataSet.Tables("Customer").Rows(rowIndex).Item(1)

42 Access Rows in a DataRow Collection
dim objTable as DataTable = objDataset.Tables("Customer") dim objRow as DataRow For each objRow in objTable.Rows strResult=strResult+“ " & objRow("cid") & " " & objRow("cname") & vbCrLf Next

43 DataRow object’s GetChildRows Method
Returns a collection of rows from another table that are related as child rows to this row.

44 Displaying Parent/Child Records in a Relation
Define the relation. Specify the relation in the GetChildRows method of the DataRow object.

45 Imports System.Data.OleDb
Public Class Form1 Inherits System.Windows.Forms.Form Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OledbConnection(strConn) Dim strSQLCust As String = "select * from customer;" Dim strSQLOrder As String = "select * from orders;" Dim objComm As New OledbCommand() Dim objAdapter As New OledbDataAdapter() Dim objDataSet As New DataSet() Dim objRel As DataRelation Dim strResult As String Dim rowIndex As Integer = 0 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objComm.Connection = objConn objComm.CommandType = CommandType.Text objComm.CommandText = strSQLCust objAdapter.SelectCommand = objComm objConn.Open() objAdapter.Fill(objDataSet, "Customer") objComm.CommandText = strSQLOrder objAdapter.Fill(objDataSet, "Orders") objRel = New DataRelation("custOrder", objDataSet.Tables("Customer").Columns("cid"), objDataSet.Tables("Orders").Columns("cid")) objDataSet.Relations.Add(objRel) Call showChild(rowIndex) End Sub

46 Private Sub showChild(ByVal RowIndex)
TextBox1.Text = objDataSet.Tables("customer").Rows(RowIndex).Item("cid") TextBox1.Text = objDataSet.Tables("customer").Rows(RowIndex).Item("cname") Dim objOrderRel As DataRelation = objDataSet.Tables("customer").ChildRelations("custOrder") Dim strResult As String Dim objChildRow As DataRow For Each objChildRow In objDataSet.Tables("customer").Rows(RowIndex).GetChildRows(objOrderRel) strResult = strResult + objChildRow("oid") + " " + objChildRow("odate") + vbCrLf Next TextBox3.Text = strResult End Sub ****Note****: How to prevent EOF error? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click rowIndex += 1 Call showChild(rowIndex)

47 Display Child Records in Grid
This technique uses the fact that the DataView of a table can be used as a DataSource in binding a data grid. Assuming a Customer/Orders relationship, for each customer record: Use Table object’s Clone method to create a temporary child table structure. Use Table object’s ImportRow method to import child records to the clone table. Use the clone table’s DefaultView to bind the DataGrid.

48 Dim objRow As DataRow Dim drFound As DataRow drFound = objDataSet.Tables("Customer").Rows("0") TextBox1.Text = drFound.Item("cid") TextBox2.Text = drFound.Item("cname") Dim childTable As DataTable childTable = objDataSet.Tables("orders").Clone For Each objRow In drFound.GetChildRows(objOrderRel) childTable.ImportRow(objRow) Next DataGrid1.DataSource = childTable.DefaultView

49 Creating Parameter Queries
1. Specify the parameters in the SQL statement. Dim strSQLOrder As String = "select * from orders where cid= ?;" 2. Add the parameters to the Command Object’s Parameters collection. objComm.Parameters.Add("?cid", OleDbType.VarChar) 3. Set parameter’s value. objAdapter.SelectCommand.Parameters("?cid").Value = "1"

50 Parameter Query Example
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) objConn.Open() Dim strSQLOrder As String = "select * from orders where cid= ?;" Dim objComm As New OleDbCommand() Dim objAdapter As New OleDbDataAdapter() Dim objDataSet As New DataSet() objComm.Connection = objConn objComm.CommandType = CommandType.Text objComm.CommandText = strSQLOrder objComm.Parameters.Add("?cid", OleDbType.VarChar) objAdapter.SelectCommand.Parameters("?cid").Value = "1" objAdapter.Fill(objDataSet, "Orders") DataGrid1.DataSource = objDataSet DataGrid1.DataMember = "orders"

51 Can we use child table’s view to display child records in a grid?

52 Multiple Forms: Where to import the oledb, and where to create the oledb objects
Imports System.Data.OleDb Module Module1 Public strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Public objConn As New OleDbConnection(strConn) Public strSQLCust As String = "select * from customer;" Public strSQLOrder As String = "select * from orders;" Public objComm As New OleDbCommand() Public objAdapter As New OleDbDataAdapter() Public objDataSet As New DataSet() Public objRel As DataRelation Public strResult As String Public rowIndex As Integer = 0 Public ObjDataView As New DataView() Public Sub main() objComm.Connection = objConn objComm.CommandType = CommandType.Text objComm.CommandText = strSQLCust objAdapter.SelectCommand = objComm objConn.Open() objAdapter.Fill(objDataSet, "Customer") objComm.CommandText = strSQLOrder objAdapter.Fill(objDataSet, "Orders") End Sub End Module

53 Create Web Data Form Using ADO.Net Programming Model
Demo: Create ADO objects and bind them to a dataGrid. DataView

54 Using ToolBox/Data to Define Ado.Net Objects
Connection: ToolBox/Data/OledbConnection ConnectionString Command: ToolBox/Data/OledbCommand Connection CommandType CommandText

55 Using DBMS Views Create views (queries) with DBMS
Create commands to select records from views.


Download ppt "Introduction to ADO.NET"

Similar presentations


Ads by Google