annotate HowTo/Data/AdoDemo.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Configuration;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Data.SqlClient;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 namespace HowTo.Data
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public class AdoDemo
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 // Typified definition of the Gender database field.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public enum Gender
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 Female,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 Male,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 Unknown,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 Other
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 // Business object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public class Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public int ID { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 public string FirstName { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 public string MiddleName { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public string LastName { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public /*[a]*/Gender/*[/a]*/ Gender { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 // ADO.NET data access method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public List<Person> /*[a]*/GetList/*[/a]*/(Gender gender)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 // Map the typified parameter value to its database representation.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 string paramValue = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 switch (gender)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 case Gender.Female: paramValue = "F"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 case Gender.Male: paramValue = "M"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 case Gender.Unknown: paramValue = "U"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 case Gender.Other: paramValue = "O"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 // Read a database configuration string.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 string cs = ConfigurationManager.ConnectionStrings["DemoConnection"].ConnectionString;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 // Create and open a database connection.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 using (SqlConnection con = new SqlConnection(cs))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 con.Open();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 // Create and initialize a Command object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 using (SqlCommand cmd = con.CreateCommand())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 cmd.CommandText = "SELECT * FROM Person WHERE Gender = @gender";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 cmd.Parameters.AddWithValue("@gender", paramValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 // Execute query.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 using (SqlDataReader rd = cmd.ExecuteReader())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 List<Person> list = new List<Person>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 while (rd.Read())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 Person person = new Person();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 // Map a data reader row to a business object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 person.ID = Convert.ToInt32 (rd["PersonID"]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 person.FirstName = Convert.ToString(rd["FirstName"]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 person.MiddleName = Convert.ToString(rd["MiddleName"]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 person.LastName = Convert.ToString(rd["LastName"]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 switch (rd["Gender"].ToString())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 case "F": person.Gender = Gender.Female; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 case "M": person.Gender = Gender.Male; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 case "U": person.Gender = Gender.Unknown; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 case "O": person.Gender = Gender.Other; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 list.Add(person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 return list;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 List<Person> list = GetList(Gender.Male);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 Assert.Greater(list.Count, 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 }