c# programming for the microsoft sql server database dave henson [email protected]
TRANSCRIPT
![Page 2: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/2.jpg)
Logistics
• Class Hours
• Notes/Handouts
• Demos
• Class website
![Page 3: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/14.jpg)
if Statement
if (loop != 20)
{
string errorMessage = “Oops”;
}
![Page 15: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/15.jpg)
while statement
while(dr.Read())
{
Console.WriteLine(dr[“FirstName”]);
}
![Page 16: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/18.jpg)
Chapter 3 - Class Libraries
![Page 19: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/24.jpg)
Chapter 4 – ADO.Net
![Page 25: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/26.jpg)
Required Namespaces
• System.Data
• System.Data.SqlClient
![Page 27: C# Programming for the Microsoft SQL Server Database Dave Henson dhenson@certfiednetworks.com](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022081515/56649d8a5503460f94a705ec/html5/thumbnails/37.jpg)
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”