30
COP2360 – C# Programming Chapter 14 – Nov 25, 2015

COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Embed Size (px)

Citation preview

Page 1: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

COP2360 – C# Programming

Chapter 14 – Nov 25, 2015

Page 2: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Announcements

Three Weeks Left– Next Week

ASP.NET (Web) Development Part II of Assignment 5

– December 9 Part III of Assignment 5 Final Exam Review Final Exam Programming Assignment

– December 16 Final Exam

Please Sign on to Panther Web and complete the Student Assessment for this course!! I might bring better candy to the final if you all do!!

Page 3: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Tonight

Database Access Assignment 5 – Part I

Page 4: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Flat File Access to Data

Fields are “hard” to define and have to be converted to variables once the data is read

Relationships between data difficult to define– For example, our Assignment 4 had Questions and Answers with

the Answers being related to specific questions. The best we could do was to have the Answer follow the Questions.

– We needed to show which answer was correct, so we used an asterisk.

Multiple access to the same information almost impossible– Once a File is opened by a program, it is locked from being

opened by other programs. Every file needed it’s own set of definitions to be

understandable by the program.

Page 5: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

What is a Database

A large, integrated collection of data.– Models a real-world enterprise.– Entities

a Noun (e.g., students, courses) Attributes – The fields within the Entity

– Relationships a Verb that relates two or more Nouns Usually answers a question (e.g., Which courses is Madonna taking this summer?)

Page 6: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

What is a Database Management System (DBMS)

A software package designed to store and manage databases

Page 7: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Why Use a DBMS?

Data independence and efficient access. Reduced application development time. Data integrity and security. Uniform data administration. Concurrent access Data Security/Recoverability

Page 8: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Relational Data Model

Main concept: relation, basically a table with rows (sometimes called tuples) and columns.

Every relation has a schema, which describes the columns or fields (or attributes) within the table.

Both entities and relationships can be described in a relation.

Page 9: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Major Relational Players

Oracle– Large scale corporation databases

financials inventory

Microsoft SQL Server– Small to medium corporation databases– Integrated tightly with other Microsoft products– Similar product support as Oracle

MySQL (now owned by Oracle)– #1 Open Source database– used by many social media sites (Facebook, Twitter, etc.)

Page 10: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Data Definition Language (DDL)

Used to define the schema and manage the database structure– Create Table– Alter Table– Create Index

Page 11: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Data Manipulation Language (DML)

Commands to add, update and delete records in the database– INSERT– UPDATE– DELETE

Commands to query the database – SELECT

Page 12: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

NoSQL Databases

To try and provide for access to massively large data sets, several companies have developed what are named “NoSQL” (for Not Only SQL) databases

– Several different models using different data structures.– Basics include the splitting of data into a self defining

database across multiple servers. XML of JSON (or other) self defining methods employed As data grows, more small servers can be added instead of

having to increase capacity of one server When multiple servers are used, “ACID” is going to severely

slow down the update and retrieval processes.– Each version has it’s own unique data definition and data

manipulation languages.

Page 13: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Microsoft Visual StudioDatabase Objects

Microsoft SQL Server– Applications using SQL Server 7.0 or later

Oracle– Applications using Oracle data sources

Object Linking and Embedding Database (OLE DB) – Common layer that can access many different database

(including Oracle, SQLServer, Access, MySQL) through the use of connection libraries for each type of database

Open Database Connectivity (ODBC) – An earlier layer for accessing many different database types

Page 14: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Microsoft Visual StudioDatabase Objects

Visual Studio has separate libraries for each of the data types– SQL and Oracle layers are more “direct” than

OLEDB – but – it locks in the database For the stuff I did in the past, I used OLEDB because

the code I had accessed both Oracle and SQLServer databases.

If you are for sure only going to support one database platform, (and it’s either Oracle or SQLServer), it would be better to use the one specific for that DBMS.

Page 15: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

The FundFriend Database

Page 16: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Let’s Play With The Data

Some simple single table queries– Probably the best we can do with this is against Account

Let’s link the Account to Friends Let’s link the Account to the Transactions Let’s put them all together. OK – Not expecting you to get this in five minutes!!

– All SQL for our Assignment 5 will be done for you.

Page 17: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

A Basic Select Clause

Let’s Use the Server Explorer in VS2012

SELECT field-names

FROM table-name(s)

WHERE condition clause

Page 18: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Accessing a Database through VSManual Set-Up Classes

Connection Class– Defines the type and location of the database

Command Class– Used to define the command (Select, Insert, Update,

Delete) that needs to be executed. DataReader Class

– For Select statements, returns one record at a time so that it can be manipulated.

DataAdapter Class– For Select statements, holds all records returned by the

Select, and can be used to subsequently update the database (although I really don’t like that feature!!)

Page 19: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

19

Connecting to the Database (Microsoft SQL Server)

Add using directives – using System.Data.Sql;– using System.Data.SqlClient;

Instantiate an object of connection class– Send connection string that includes the actual database

provider and the data source (name of the database)string sConnection;

sConnection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + Application.StartupPath + @"\FUNDFRIEND.MDF;Integrated Security=True";

SqlConnection dbConn = new SqlConnection(sConnection);dbConn.Open();

Page 20: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Once Connected…

Set up a Command Class to pass the SQL statements to the database management routines:

dbCmd = new SqlCommand();

dbCmd.CommandText = sSQL;

dbCmd.Connection = dbConn; For Update type commands, one would then

Execute the command and it usually returns the number of records changed.

int nRecordsChanged = dbCmd.ExecuteNonQuery()

Page 21: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Retrieving Data

If you are retrieving data, you have two choices:– Record by record using a data Reader:

dbReader = dbCmd.ExecuteReader();

while (dbReader.Read())

{// Do stuff with the data from the reader

}

dbReader.Close();

Page 22: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Retreiving Data

Or, one can pull the entire result set from the query into a Dataset using a DataAdapter ClassdbCmd.CommandText = sSQL;

dbCmd.Connection = dbConn;

dbTranAdapter = new SqlDataAdapter();

dbTranAdapter.SelectCommand = dbCmd;

dbTranSet = new DataSet();

dbTranAdapter.Fill(dbTranSet, "Transactions");

Page 23: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Let’s Access The Data Through a Program Using the Manual Way

Page 24: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

“Automated” Data Access inVisual Studio Windows Forms

Data Aware Controls can be configured with database connections and SQL and kinda work by magic.– Not a fan because you lose a great deal of

control, but will walk through this anyway in case you see this somewhere else.

Includes– GridView, Combo Box, Details View

Page 25: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

“Magical” database access

Creating a “data source” Binding that data source with a data aware

control Linking that to the SQL statements for

retrieving and updating the data. I will now fail miserably and giving an

example of this, but have one already done just in case!!

Page 26: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

A Word About LINQ

There is a big “disconnect” between application program and database access

– The “standard” way of accessing data makes use of libraries that bride the gap between the program and the database

But basically you are passing SQL strings to the DBMS and returning datasets that need to be interpreted

Several other systems have tried to “Marry” programs to DBMSs.– Java uses JSQL, which basically is a pre-compiler that allows a program to

code “SQL” statements are regular programming statements.– And old database access technique call PRO-C did a similar set-up for “C”

programs– I have always moved the database calls out of the main program and into

classes or web services so all of the crap you have to do is hidden from the main routines.

Page 27: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

A Word About Linq

With Visual Studio, Microsoft introduced their “Language Integrated Query” which allows a program to “connect” to a data source and then have the columnar information available for direct manipulation by the program.

– What we have now requires us to convert the data to C# variables, and the convert it back when we update the database.

Goods and Bads– Integration is nice, but it has a cost

Some complex things you can do with SQL, you cannot do with LINQ Whatever LINQ looks like, it ends up being SQL, so it may not be as

efficient as doing it by hand. But it does make the coding of a program more direct and concise. And it can be used for more than just databases.

Page 28: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Moving On

Our Assignment 5 will be to develop a web based application that can run on a smart phone that implements a “PayPal” or “Bill Pay” System.

The system will be based on our FundFriend database

Tonight, we will do a quick design of what we need to incorporate into the system

Page 29: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

FundFriend Web Application

This week you must complete the basic screen designs for the system and turn them into Blackboard before next week (it would be tonight, but I’m guessing as I write this that several students won’t be here). That will be worth 3 points.

Next week we will go over the basics of Web Development using VS and C#, and then mock up our design in ASP.NET forms. These form designs would then be turned in and will be worth 3 more points.

The last week of class, we will do our best to add the actual code to the system to link the forms together and update the database. Whatever we get done that evening before the review will be worth 4 points.

Each week I will have a “starting” point so that we are all on the same “page”.

Page 30: COP2360 – C# Programming Chapter 14 – Nov 25, 2015

Fund FriendWhat do we need?