Acesso a Dados ADO.NET
ADO.NET Data Source Controls Um control Data Source é um objecto no qual se pode declarativamente definir: Informação sobre a conexão com a base de dados Informação de pesquisa, como instruções SQL ou métodos a serem invocados. Comando para inserir, alterar e apagar dados. Parâmetros para comandos SQL Outras operações como: pagging, caching e sorting 1
Data Source Controls Sql- DataSource Object- DataSource Access- DataSource Xml- DataSource SiteMap- DataSource Data Component Site Map Provider SQL Databases Any Data Access Databases XML Data Site Maps 2
Data Source Controls Hierarquia de classes para os Data Source Controls 3
Data Source Controls ObjectDataSource Enables you to work with a business object or other class and create Web applications that rely on middle-tier objects to manage data. Supports advanced sorting and paging scenarios unavailable with the other data source controls. SqlDataSource Enables you to work with Microsoft SQL Server, OLE DB, ODBC, or Oracle databases. When used with SQL Server, supports advanced caching capabilities. The control also supports sorting, filtering, and paging when data is returned as a DataSet object. AccessDataSource Enables you to work with a Microsoft Access database. Supports sorting, filtering, and paging when data is returned as a DataSet object. XmlDataSource Enables you to work with XML data, especially for hierarchical ASP.NET server controls such as the TreeView or Menu controls. Supports filtering capabilities using XPath expressions and enables you to apply an XSLT transformation to the data. The XmlDataSource enables you to update data by saving the entire XML document with changes. SiteMapDataSource Used with ASP.NET site navigation. Data Source Controls Overview [http://msdn2.microsoft.com/en-us/library/ms227679(vs.80).aspx] 4
Data Source Controls Data Source Control - classes e interfaces Representam uma ou mais vistas de informação. Cada vista é representada por uma enumeração: Collections, DataSet, business objects O conteúdo da data source é gerido através de comandos SQL: insert, delete, Propriedades e métodos são definidas na interface IDataSource Métodos da IDataSource: GetView e GetViewNames Uma vista é representada por uma instância da classe DataSourceView Esta classe tem métodos para gerir a informação, associada com a vista: Delete, Insert,Select, Update 5
Data-Bound Controls Ligados a Data Source Controls via DataSourceID Suporte a selecção, ordenação, paginação, edição GridView DetailsView FormView 6
Data-Bound Controls ASP.Net 1.1 DataGrid Repeater DataList 7
Data Source Control / Data Bound Control GridView -> Data Source Controls -> and Data Sources 8
SqlDataSource Declarative Data Binding Configuração no Web.config <connectionstrings> <add name="northwindconnectionstring" connectionstring="provider=microsoft.jet.oledb.4.0; Data Source=D:\dotnet2_0_projectos\northwind.mdb" providername="system.data.oledb"/> </connectionstrings> Página.aspx <asp:sqldatasource ID="SqlDataSource1" runat="server ConnectionString="<%$ ConnectionStrings:northwindConnectionString %> ProviderName="<%$ ConnectionStrings:northwindConnectionString.ProviderName %>" SelectCommand="SELECT [CompanyName [City] FROM [Customers]"> 9
SqlDataSource SqlDataSource em código SqlDataSource sqlds=new SqlDataSource(); string connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\dotnet2_0_projectos\\northwind.mdb "; sqlds.connectionstring=connectionstring; sqlds.providername= "System.Data.OleDb"; sqlds.datasourcemode= SqlDataSourceMode.DataSet sqlds.selectcommand="select [CompanyName], [ContactName], [ContactTitle], [Address], [City] FROM [Customers]"; Binding com uma GridView Dal dal = new Dal(); SqlDataSource sqlds = dal.getsqldtcustomers(); GridView1.DataSource = sqlds; GridView1.DataBind(); 10
DataSource Configurar Data Source (Access) 11
Data Bound Control Configurar GridView 12
Data Bound Control GridView DatasourceID faz a ligação a um Data source Control Columns asp:boundfield (DataField), ButtonField, Paging (AllowPaging), sorting (AllowSorting), <asp:gridview ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="AccessDataSource1" Height="269px" Width="248px"> <Columns> <asp:boundfield DataField="CategoryName" HeaderText="CategoryName" SortExpression="CategoryName" /> <asp:boundfield DataField="Description" HeaderText="Description" SortExpression="Description" /> </Columns> </asp:gridview> 13
Parâmetros num Query Configurar atributo SQL Where 14
Parâmetros num Query Comando SQL com parâmetros de um controlo [CustomerID] coluna da GridView SelectParameters, asp:controlparameter <asp:accessdatasource. SelectCommand="SELECT [CompanyName], WHERE ([CustomerID] =?)"> <SelectParameters> <asp:controlparameter ControlID="GridView1" DefaultValue="BOTTM" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:accessdatasource> 15
Parâmetros associados a controlos Tipos de parâmetros: ControlParameter CookieParameter FormParameter ProfileParameter QueryStringParameter SessionParameter Exemplo: <SelectParameters> <asp:sessionparameter </SelectParameters> Name="empid" SessionField="empid" DefaultValue="5" /> 16
DetailView Configuração de um DetailView com um controlo como parâmetro do comando SQL 17
Comandos SQL O Wizard de configuração gera os comandos: InsertCommand, UpdateCommand, DeleteCommand <asp:accessdatasource ID="AccessDataSource3" runat="server" DataFile="~/northwind2.mdb" SelectCommand="SELECT [CompanyName], [CustomerID], [ContactName], [City] FROM [Customers]" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] =?" InsertCommand="INSERT INTO [Customers]. [City]) VALUES (?,?,?,?)" UpdateCommand="UPDATE [Customers] SET [CompanyName] =?, [ContactName] =?, [City] =? WHERE [CustomerID] =?"> <DeleteParameters> <asp:parameter Name="CustomerID" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:parameter Name="CompanyName" Type="String" /> <asp:parameter Name="ContactName" Type="String" /> </UpdateParameters> <InsertParameters> <asp:parameter Name="CompanyName" Type="String" /> <asp:parameter Name="CustomerID" Type="String" />.. </InsertParameters> </asp:accessdatasource> 18
DetailsView DetailsView Permite mostrar um único registo da tabela Muito útil para vistas master/details Behavior properties: AllowPaging AutoGenerateDeleteButton AutoGenerateEditButton AutoGenerateInsertButton Public class DetailsView : CompositeDataBoundControl 19
DetailsView DetailsView <asp:detailsview ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="AccessDataSource4" Height="50px" Width="277px" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" AutoGenerateDeleteButton="True"> <Fields> <asp:boundfield DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" /> <asp:boundfield DataField="ContactName" HeaderText="ContactName" SortExpression="ContactName" /> <FooterStyle BackColor="Tan" /> <EditRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" /> <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue". 20