Download presentation
Presentation is loading. Please wait.
Published byReynold Watson Modified over 9 years ago
1
Neal Stublen nstublen@jccc.edu
2
Tonight’s Agenda Interfaces Generics Code Organization Databases ADO.NET Datasets Q&A
4
What’s an interface? It’s like a class with… No member data All methods are public All methods are abstract An interface implies nothing about the implementation behind it A class can only inherit from one class A class can implement multiple interfaces Interfaces often represent only a portion of a class’ functionality
5
Why interfaces? Interfaces are better suited to situations in which your applications require many unrelated object types to provide certain functionality Interfaces are more flexible than base classes because you can define a single implementation that can implement multiple interfaces. Interfaces are better in situations in which you do not want or need to inherit implementation from a base class. Structures cannot inherit from classes, but they can implement interfaces.
6
Common.NET Interfaces IComparable Used to compare two objects Sorting algorithms IDisposable Frees unmanaged resources when an object goes out of scope If your classes implement these interfaces, they can be used wherever these interfaces are specified
7
Example Interfaces public interface IStreamable { bool Read(FileStream inInput); bool Write(FileStream inOutput); } public interface IHTMLDisplayable { void Render(OutputStream inStream); }
8
Implementing Interfaces public interface IStreamable { bool Read(FileStream inInput); bool Write(FileStream inOutput); } public class MyObject : IStreamable { public bool Read(FileStream inInput) { } public bool Write(FileStream inOutput) { } }
9
Implementing ICloneable // Duplicate any cloneable object public List Duplicator(ICloneable src, int count) { List list = new List (); for (int index = 0; index < count; ++index) { list.Add(src.Clone()); } return list; }
10
Looking at IComparable Any object that implements IComparable can be sorted with the generic Array.Sort() method
12
What’s a generic class? A class definition that doesn’t explicitly declare all of the types it uses internally Allows creation of new types by specifying those internal types later
13
Using Generic Types Generic types are declared using <> after the type name Instead of the general purpose interface: IComparable Use the type-specific interface: IComparable class Temperature : IComparable
14
Generics Example class Average { public void Include(T inValue); public T Average { get {... } } Average integerAverage; Average doubleAverage;
15
Updating IComparable Instead of comparing generic objects, we can compare Temperature objects
16
Common Generics Collection classes List SortedList Enumeration (foreach) IEnumerable IEnumerator
17
Generic Constraints public class MyGeneric where T: class { // T is a class (can be assigned null) } public class MyGeneric where T: class, IComparable { // T implements IComparable interface } public class MyGeneric where T: struct { // T is a struct } public class MyGeneric where T: new() { // T has a default constructor }
19
Code Organization Multiple classes in a single file Closely related classes (e.g. EventArgs) Nested classes Objects that only exist within the context of another type of object
20
Partial Classes Split a single class over multiple files Forms split Designer code into separate file Possible to split interface implementations into separate files Partial classes must have the same visibility Partial methods split the declaration and implementation across files
21
Namespaces Organize classes into logical groupings Avoid type name collisions using .
22
Nested Namespaces using ns1 { using ns2 { } } using ns1.ns2 { }
24
XML Documentation Standardized documentation format for C# code Type three slashes “///” before a method implementation or class member tag is used by IntelliSense Processed by third party tools Doxygen Sandcastle
26
Class Libraries Share class across multiple projects Projects “reference” other projects Move SportsTeam into a class library
28
Databases Client-server architecture One server, many clients Server runs Microsoft SQL Server Clients use ADO.NET 4 Relational databases SQL (Structured Query Language)
29
Tables Tables store data One or more records (rows) A primary key uniquely identifies each row Indexes provide an efficient way to access data based on values in specific columns
30
“Relations” Among Tables Key columns are used to relate tables Foreign keys in one table correspond to primary keys in another table One-to-many One-to-one Many-to-many
31
Table Columns Columns are defined by a name and data type bit char, varchar, text datetime, smalldatetime decimal, numeric float, real bigint, int, smallint, tinyint money, smallmoney
32
Column Values null (maybe, maybe not – depends on column definition) Default value Identity column (auto-increment) Constraints
33
SELECT Select data from a database SELECT column_name,column_name FROM table_name; SELECT * FROM table_name; SELECT title, publisher FROM books;
34
INNER JOIN Select all rows from two table where specified columns have matching values SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name; INNER JOIN is the same as JOIN
35
ADD, UPDATE, DELETE Add a row to a table INSERT INTO table_name VALUES (value1,value2,value3,...); INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); Update a row in a table UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value; Delete a row from a table DELETE FROM table_name WHERE some_column=some_value;
36
Online Reference Tutorials and references http://w3schools.com/sql
38
ADO.NET Data providers implement a common API to various database servers SQL Server OLE DB ODBC Oracle Third party MySQL SQLite
39
Components Database server .NET data provider Connection ○ Connects to a specific database Command ○ SELECT, UPDATE, etc. DataReader, DataAdapter ○ Help retrieve data from a query
40
Datasets Store data in a disconnected cache Data source may be a database, XML data, local application data Mimics the structure and behavior of a relational database
41
Datasets Mimic Relational DB Dataset contains a collection of tables Not necessarily the same table from the database May be a subset of columns and rows May be joined to another table Tables contain a collection of columns Tables contain a collection of rows Tables contain a collection of constraints Dataset contains a collection of relations Everything is accessed through object properties
42
Alternatives to Datasets You can use Command and Connection objects directly Select, Insert, Update, Delete
43
Database Concurrency Multiple clients accessing data ADO.NET datasets are “disconnected” Pessimistic concurrency Lock database records to prevent conflicts Optimistic concurrency Check for data changes before writing Throw an exception if data has changed “Last in wins” Data is written by last operation Data may be lost
44
Avoid Concurrency Issues Update and refresh datasets frequently Avoid updating large tables in datasets Only reduces risk! You still must handle the exceptions
47
Populating a Database SQLExpress should be installed with Visual Studio The book provides a.sql file for populating the MMABooks database in SQLExpress Double-click the.bat file on the S: drive We’ll need to repeat this process at the start of each class session
48
Confirm Database Access Using Visual Studio to locate the new database as a Data Source View > Server Explorer Add Connection... Server name:.\SQLEXPRESS Database name: MMABooks Test Connection
49
Using the Data Sources Window
50
Dataset Summary Instead of a database, we can pull data from: WCF Data Services Custom objects SharePoint Entity Framework Object-relational mapping framework (ORM) Maps database table data to C# objects ○ Object instance represents a table row View > Server Explorer
51
Dataset Summary Connection strings can be stored in app.config Allows reuse of the connection string A dataset can be modified in Visual Studio to add tables, columns, etc. Visual Studio generates.xsd schema files for the dataset
53
DataGridView Control Bound control Table view of the dataset Multiple objects are added to the form
54
Other Bound Controls Change default data control for table in Data Sources Change default data control for columns in Data Sources
55
Behind the Scenes… Load event is updated for the form Save click event is updated for the binding navigator
56
Bound TextBox Controls Formatting and Advanced Binding Select TextBox Open Properties Window Expand DataBindings property Select Advanced option, click “…” Select new format type Specify representation of null value
57
Bound ComboBox Controls Populate a ComboBox with values from a column of a database table SelectedItem is used to specify the value in a column of another database table
58
Code Practice Select customer state using dropdown list ComboBox instead of TextBox Create StatesDataSet in Data Source window Add DataSet control for StatesDataSet and set DataSetName property Add BindingSource control for DataSet and set DataSource/DataMember properties Set State field to use ComboBox Set ComboBox to use data bound controls Clear ComboBox data bindings for Text property
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.