Low Level ADO.NET Operations

advertisement
Low Level ADO.NET Operations
Microsoft Visual C# 2008 Step by Step
Chapter 25
1
Objectives
You will be able to
 Write C# programs that perform SQL
Select operations on a database table
and display the results in a Windows
form.
 Open a new Windows form and pass
information to it from the original form.
2
Overview

The Northwind Traders Database

A Windows program to browse a table.


Getting information for connection string at run time
SqlConnection object


SqlCommand object



Connection String
Command String
Peforming a Select command
Browsing the results
3
The Northwind Traders Database


Classic Microsoft Example Database
Free download from Microsoft.


Can install on your own computer if you have MS SQL
Server.



Read-only version on scorpius
Installation instructions in Chapter 25
SQL script instnwnd.sql
We will use scorpius for examples and projects.
4
The Northwind Traders Database
Visual C# 2008 Step by Step, page 500
5
Accessing Scorpius

Unless you are on a wired connection to
the USF network, you will need to set up
a VPN connection. (Virtual Private Network)



https://vpn.usf.edu/
See
http://www.cse.usf.edu/~turnerr/Web_Application_Design/
017_Mapping_a_Drive.pdf


Slides 2 - 7
You do not need to map a drive, as described in the
rest of this presentation.
6
Opening VPN Connection

Once you have installed the VPN software on
your computer, you only need to open the
connection:


All Programs
 Juniper Networks
 Network Connect 6.5.0
 Network Connect
You can put a shortcut to Network Connect on your
desktop.



Right click on the menu command.
Select Create Shortcut
Drag the shortcut to the desktop
7
Network Connect

This says that you are connected
through the VPN:
8
Add Connection for Northwinds Database
In Visual Studio 2008 Server Explorer
Note: Visual Studio 2010 Server Explorer
does not work with Scorpius.
9
Add Connection for Northwinds Database
10
The Northwind Traders Database
11
Products
12
Employees
13
Northwind Product Browser


Simple example to illustrate use of ADO
primitives for low level access.
Will get the username and password
from textboxes.


Open a new Windows form to display
Product information.
For now, display Product Name only.

Will extend to display more infomation.
14
Northwinds Product Browser

Create a new Visual C# Windows Forms application.

.NET Framework 3.5
15
Initial Form
Set UseSystemPasswordChar property of tbPassword to true.
16
Form1.cs
using
using
using
using
using
System;
System.Collections.Generic;
System.Data;
System.Data.SqlClient;
System.Windows.Forms;
namespace Product_Browser
{
public partial class Form1 : Form
{
List<String> Product_List;
public Form1()
{
InitializeComponent();
}
17
btnGetData_Click()
private void btnGetData_Click(object sender, EventArgs e)
{
SqlDataReader rdr;
SqlConnection cn;
Product_List = new List<string>();
try
{
cn = Setup_Connection();
rdr = Get_SqlDataReader(cn);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
18
btnGetData_Click()
while (rdr.Read())
{
String Product_Name = (String)rdr["ProductName"];
Product_List.Add(Product_Name);
}
rdr.Close();
cn.Close();
Product_Information Product_Info_Form =
new Product_Information(Product_List);
Comment this out
temporarily
this.Hide();
Product_Info_Form.ShowDialog();
this.Close();
}
19
Setup_Connection()
private SqlConnection Setup_Connection()
{
String connection_string = "server=scorpius.eng.usf.edu; " +
"database=Northwind;" +
"User=" + tbUserName.Text + "; " +
"Password=" + tbPassword.Text;
SqlConnection conn =
new SqlConnection(connection_string);
conn.Open();
return conn;
}
20
Get_SqlDataReader()
private SqlDataReader Get_SqlDataReader(SqlConnection conn)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText ="SELECT ProductName FROM Products";
cmd.Connection = conn;
return cmd.ExecuteReader();
}
21
Add a Second Windows Form
22
Add a Second Windows Form
23
Design the Form
24
Product_Information.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Product_Browser
{
public partial class Product_Information : Form
{
int Current_Record_Number;
List<String> Product_List;
// Constructor
public Product_Information(List<String> Product_List_Arg)
{
InitializeComponent();
this.Product_List = Product_List_Arg;
Current_Record_Number = 0;
Display_Current_Record();
}
25
Product_Information.cs

Add stub for Display_Current_Record.
void Display_Current_Record()
{
}
26
Back in Form1.cs

At end of btnGetData_Click:
Product_Information Product_Info_Form =
new Product_Information(Product_List);
this.Hide();
Product_Info_Form.ShowDialog();
this.Close();
}

Build and run
27
First Form
28
Second Form
29
Product_Information.cs

Now we need to fill in the code for the
Product Information form to do its
work.
30
Display_Current_Record()
private void Display_Current_Record()
{
tbProductName.Text = Product_List[Current_Record_Number];
tbRecordNumber.Text = "Record " + (Current_Record_Number + 1) +
" of " + Product_List.Count;
Update_Buttons();
}
31
Update_Buttons()
private void Update_Buttons()
{
btnFirst.Enabled = Current_Record_Number > 0;
btnNext.Enabled = Current_Record_Number < Product_List.Count - 1;
btnPrev.Enabled = Current_Record_Number > 0;
btnLast.Enabled = Current_Record_Number < Product_List.Count - 1;
}
Build and run
32
First Form
33
Second Form
34
Button Click Event Handlers

Double click on each button on the
Product_Informaiton form to add an
event handler.
35
Button Click Methods
private void btnFirst_Click(object sender, System.EventArgs e)
{
Current_Record_Number = 0;
Display_Current_Record();
}
private void btnPrev_Click(object sender, System.EventArgs e)
{
Current_Record_Number-=1;
Display_Current_Record();
}
private void btnNext_Click(object sender, System.EventArgs e)
{
Current_Record_Number+=1;
Display_Current_Record();
}
private void btnLast_Click(object sender, System.EventArgs e)
{
Current_Record_Number = Product_List.Count -1;
Display_Current_Record();
36
}
Product Browser in Action
37
Product Browser in Action
38
Product Browser in Action
39
Shutting Down

The Form1 object exists while the
Product_Information form is being used.


When the user clicks the Close button on
the Product_Information form, control
returns to Form1.


But it is not visible on the screen.
Following
Product_Info_Form.ShowDialog();
The Form1 object calls Close()
terminating the program.
40
Download