c# programming for the microsoft sql server database dave henson [email protected]

37
C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks. com

Upload: horatio-newman

Post on 15-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

C# Programming for the Microsoft SQL Server Database

Dave Henson

[email protected]

Page 2: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Logistics

• Class Hours

• Notes/Handouts

• Demos

• Class website

Page 3: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Recommended Reading

• Beginning C# Databases, APress, ISBN 1-59059-433-9

Page 4: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Course Setup

• Software required to complete course labs:• Windows xp, 2000 or 2003• .Net Framework 1.1• MSDE

• Recommended Software:• Visual Studio 2003• SQL Server Standard Version

Page 5: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Course Topics

• Quick C# Primer• Tools• Creating/Using Class Libraries• ADO.Net• Exception handling• Stored Procedures• Avoiding SQL Injection• Com Interop• SQL Server Best Practices and Techniques

Page 6: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Chapter 1 - Tools

• Visual Studio

• Command Line Tools

• Other Tools

Page 7: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Visual Studio

• Fully integrated IDE

• Intellisense

• Automatic Code Generation

• Drag/Drop Database and Control Interface

• Database and Other Design Wizards

Page 8: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Command Line Tools

• Subdirectory:C:\WINDOWS\Microsoft.NET\Framework\V1.1.4322

• Csc.exe (vbc.exe, jsc.exe)– Compiler

• GACUtil.exe– Global Assembly Cache tool

• Ngen.exe– Native windows exe converter

• RegAsm.exe– Register a .Net assembly with COM

• SN.exe– Strong Name Generator

Page 9: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Csc.exe – C# Compiler

• Typical Syntax Examples:C:>Csc Simple.cs– Produces Simple.exe in current directory

C:>Csc /target:library DBUtil.cs– Produces DBUtil.dll in the current directory

C:>Csc /r:DBUtil.dll DBClient.cs– Products DBClient.exe which uses the dll

Page 10: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Other Tools

• IDE– Codecharge studio

• Automated Code Generation:– SQL Queries that dynamically c#– C# that dynamically builds c#– C# that dynamically builds SQL

Page 11: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Chapter 2 – C# Review

• Program Structure

• Case sensitivity

• if/while/foreach

• try/catch

• Creating objects

Page 12: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Program Structureusing System;

class App{ public static void Main() { Console.WriteLine("hey"); Console.ReadLine(); }}

Page 13: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Case Sensitivity

• Most .Net classes are Mixed Case

• Many C# keywords are lower case

• Valid Code:…

String greeting = “hello”;

String Greeting = “goodbye”;

Page 14: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

if Statement

if (loop != 20)

{

string errorMessage = “Oops”;

}

Page 15: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

while statement

while(dr.Read())

{

Console.WriteLine(dr[“FirstName”]);

}

Page 16: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

foreach statementDirectoryInfo dir = new DirectoryInfo(@“c:\\temp”);

try { foreach(FileInfo f in dir.GetFiles()) { Console.WriteLine(f.Name); }}catch(Exception e){ Console.WriteLine(e.Message);}Finally{ }

Page 17: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Creating Objects

• An object is an instance of a class

• Examples:String stuff = “hello”;

MyClass class = new MyClass(1);

SqlDataSet ds = CreateDataSet(query);

Page 18: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Chapter 3 - Class Libraries

Page 19: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Definitions

• Class library – body of functions and properties usable by other code

• Examples:– ActiveX control/COM object– .Net Assembly– Web Service– Win32 dll

• Implementation:– Often in a .dll file

Page 20: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Purpose

• Supply re-usable code to developer

• Maintain consistency

• Ease of maintenance – Separation of front end from back end

• Reduce development costs

Page 21: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Methods

Class biz{ //Static – member of the type static public string SayHi(){ return “hi”; } //Non static – member of the instance public string SayBye(){ string message = _message; return message; }}

Page 22: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Properties

• Properties are methods!

• Get

• Set

• “value” keyword has special meaning

Page 23: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Application Layers

• Presentation

• Business Logic

• Data Access

• Potential ease of use and potential disaster

Page 24: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Chapter 4 – ADO.Net

Page 25: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

ADO.NET Components

• SqlConnection

• SqlDataAdapter

• DataSet

• DataTable

• DataRow, DataColumn collections

• SqlDataReader

• SqlCommand

Page 26: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Required Namespaces

• System.Data

• System.Data.SqlClient

Page 27: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Providers

• Providers Available:– SQL Server .NET Provider– OleDB .NET Provider

• Example-AllRecordsBasicOleDB.aspx

– ODBC .NET Provider– SQL XML .NET Provider

Page 28: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Connections

• Connection Defined

• Where to Store the Connection String

• Connection Syntax Examples

• Connection Pooling

• Security

• Close Your Connections!

• Monitoring Connections

Page 29: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Where to Store the Connection String

• Options Available:– Configuration Class– Front End App (.aspx file)– Web.Config– UDL File (OleDB Only)– Registry– Custom File– COM+ Catalog Using Connection Strings

• Evaluation Terms: Security, Convenience, Performance

Page 30: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Two Connection String Syntax Examples

• In the .aspx file:ConnString = “server=10.0.0.1;UID=sa;PWD=;”Dim Conn As New SqlConnection(ConnString)

• In Web.Config XML file:<configuration> <appSettings> <add key=“ConnString” value=“server=10.0.0.1;UID=sa;PWD=;”/>

</appSettings></configuration>

Page 31: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Connection Pooling

• Defined• Controlling Min/Max-

Example6ShowConnectionStatePoolControl.aspx

• Importance of “Exact String Match”

• Pooling for SqlClient vs. OleDBClient

• Effects of pooling on SQL security

• Close Your Connections!

Page 32: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Performance Issues

• Choose Providers Wisely• DataReader vs. DataAdapter• Repeater Control vs. DataGrid Control• Connection Pooling• Embedding SQL vs. Stored Procedures• Controlling The HTML• Typed Accessor Methods-

Example7AdapterVsReaderUsingTypedAccessorMethods.asp

Page 33: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

DataReader Vs. DataAdapter

• DataReader– Forward Only– Only One Record At A Time In Memory– “Firehose” Functionality– Typed Accessor Methods Avoid Conversions– One datareader open per connection

• DataAdapter– More Overhead– More Flexible

Page 34: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Repeater Control vs. DataGrid(or DataList) Control

• Repeat Control Simply Repeats – Low overhead– You Have To Do Everything– You Can Do It Better Than Microsoft Did!

• DataGrid – Default HTML Behaviour– Higher Overhead, Most Functionality

Page 35: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Embedding SQL vs. Stored Procedures

• Stored Proc Advantages:– Procedure Cache– Separate Security Model– Potentially Less Network Traffic– Output Params, Error Code & Result Set– Can Do Anything Server Side– Abstracts the Front End from Changes –

Possible Disadvantage with Xcopy Deployment

Page 36: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Controlling the Presentation

• HTML-Use Stylesheets if Possible!

• Make Sure The Page Fails Gracefully If Needed

• With DataGrids, Use TemplateColumns

Page 37: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com

Final Recommendations

• Use DataGrids Only When Updates Are Needed

• Embed Connection In Web.Config through Config class

• Only “Select” What You Need

• Call StoredProcs For Ultimate Performance When “Paging”