Data Access with ADO.NET - PowerPoint PPT Presentation

1 / 170
About This Presentation
Title:

Data Access with ADO.NET

Description:

??????????? ??? ???????????? ? ???? ?? ?????. ???-????? ????????. ?????????? ... ?????? ?? ?????? ?? ?????. ???????????? ???? ?? ????? ... Borland ... – PowerPoint PPT presentation

Number of Views:424
Avg rating:3.0/5.0
Slides: 171
Provided by: branimirgi
Category:
Tags: ado | net | access | borland | data

less

Transcript and Presenter's Notes

Title: Data Access with ADO.NET


1
(No Transcript)
2
?????? ?? ?????? ADO.NET
???????????? ?? .NET Framework
http//www.nakov.com/dotnet/
???????? ?????
C MVP, MCSD.NET, MCDBA, MCT?????????? ????????,
BSH Ltd.www.bsh-bg.com
??????? ?????
???? (www.devbg.org)
3
?????????? ??????
  • ?????? ???????? ?? .NET Framework
  • ?????? ???????? ?? ????? C
  • ?????? ???????? ?? XML ????????????
  • ???????? ?? ?????????? ???? ?? ?????
  • ???????? ?? ????? SQL

4
??????????
  • ?????????? ???? ?? ?????
  • ????????? ? SQL Server
  • ?????? ?? ????? ? ADO.NET
  • ??????????? ??? ???????????? ? ???? ?? ?????
  • ???-????? ????????

5
?????????? ???? ?? ????? ?????????? (1)
  • ?????? ?? ?????? ?? ?????
  • ???????????? ???? ?? ?????
  • RDBMS ???????
  • ???????, ??????, ????????????? ?? ????????, E/R
    ????????
  • ????????????
  • ??????????? (constraints)
  • ???????

6
?????????? ???? ?? ????? ?????????? (2)
  • ?????? SQL
  • ????????? ????????? ? ?????? (stored procedures)
  • ??????? (views)
  • ??????? (triggers)
  • ?????????? ? ????????

7
?????????? ???? ?? ?????
  • ?????? ?? ?????? ?? ?????
  • ?????????? (??????????)
  • ???????
  • ?????????? (????????)
  • ???????-??????????
  • ???????????? ???? ?? ?????
  • ????????????? ??????????? ?? ??????? ? ??????
    ????? ??? (???????)
  • ??????? ?????? ????????????? ?????? ????????????
    ???????

8
??????? ?? ?????????? ?? ??
  • ??????? ?? ?????????? ?? ?????????? ???? ?? ?????
    (????) Relational Database Management System
    (RDBMS)
  • ?????????? ????????? ???????? ??
  • ????????? / ??????? / ????????? ?? ??????? ?
    ?????? ????? ???
  • ????????, ???????, ?????????, ??????? ? ?????????
    ?? ????? ?? ?????????
  • ????????? ?? ????? SQL
  • ?????????? ?? ???????????? (??????????????)

9
??????? ?? ?????????? ?? ??
  • RDBMS ????????? ?? ??????? ???
  • ??????? ?? ?????????? ?? ???? ?? ?????
  • ??? ?????? "Database ???????"
  • ??-???????? RDBMS ???????
  • Microsoft SQL Server
  • Oracle Database
  • IBM DB2
  • PostgreSQL
  • MySQL
  • Borland Interbase

10
???????
  • ????????? ????????????? ?????????? ?? ?????????,
    ????????? ? ?????? ? ??????. ?????? (???????
    PERSONS)
  • ???????? ???? ??????? ?????????
  • ???????? ???? ??? ? ??? (?????, ???????? ???,
    ???? ??? ??.)

11
????? ?? ???????
  • ????? ?? ??????? ? ???????? ???????????????? ??
    ???????? ?? ?????? (??? ? ???)
  • ???????? ????????? PERSONS ??? ???????? ?????

PERSONS ( id ?????, name ???????? ???,
family ???????? ???, employer ???????? ??? )
12
???????? ????
  • ?????????? ???? (primary key) ? ?????? ??
    ?????????, ????? ???????? ???????????? ????? ????
    ???
  • ??? ?????? (????) ?? ???????? ?????? ?? ????????
    ?????????? ?? ???????
  • ?????????? ???? ???? ?? ? ?????????? ?? ???????
    ??????

Primary key
13
?????? (???????)
  • ???????? ????? ????????? ?? ??????? ??
    ??????????????? primary key / foreign key

Foreign key
Primary key
Primary key
TOWN
COUNTRY
14
?????? (???????)
  • ???????? ???? (foreign key) ? ????? ?? ?????
    (primary key) ? ????? ???????
  • ???????? ????????? ??????????? ?? ??????????
  • ? ??????? ????? ?? ????????? ?? ?? ??????? ??
    ????? ????
  • ???????? ???? ????????????? (multiplicity)
  • 1 x 1 ???????? ????? / ??? ?? ?????
  • 1 x ????? ??????? / ???????
  • ????? x ????? ??????? / ?????? ????

15
????????????? ?? ????????
  • ?????? 1 x 1
  • 1 ????? ?? ?????? ??????? ??????????? ?? ????? 1
    ????? ?? ??????? ???????
  • ????? ?? ???????? ???? ??????

TOWN
POPULATION
16
????????????? ?? ????????
  • ?????? 1 x ????? (??? ????? x 1)
  • 1 ????? ?? ??????? ??????? ??????????? ?? ?????
    ?????? ?? ??????? ???????
  • ???????? ?? ????? ?????

TOWN
COUNTRY
17
????????????? ?? ????????
  • ?????? ????? x ?????
  • 1 ????? ?? ??????? ??????? ??????????? ?? ?????
    ?????? ?? ??????? ??????? ? ?????????
  • ????????? ?? ???? ???????? ???????

STUDENT_COURSE
STUDENT
COURSE
18
?????????? ?????
  • ?????????? ????? ?? ?? ???????? ???????????? ??
  • ??????? ?? ?????? ???????
  • ???????? ????? ?????????
  • ???????????? ????? ?????? ??????????? ?? ??
  • ?? ??????? ?????, ? ???? ?????????
  • ???????????? ????? ?? ??????????? ???????? ????
    Entity/Relationship ???????? (E/R Diagrams)

19
E/R ???????? ??????
?????????? ? ????????? ? Microsoft SQL Server
Enterprise Manager
20
E/R ???????? ??????
?????????? ? ????????? ? PLATINUM ERwin
21
E/R ???????? ??????
?????????? ? ????????? ? fabFORCE DB Designer
22
??????????? ?? E/R ??????
  • E/R ?????????? ?? ???????? ? ??????????? ??
    ?????????? ?? ????? (Data Modeling Tools)
  • Microsoft Visio
  • Oracle Designer
  • Computer Associates Erwin
  • SQL Server Enterprise Manager
  • IBM Rational Rose
  • theKompany Data Architect
  • fabForce DBDesigner (GNU GPL ?????? ? ??????? ???
    ?? Windows ? Linux)

23
????????????
  • ?????????????? ?? ???????????? ????? ????????
    ??????????? ?? ?????
  • ????????????????? ????? ???????? ?????
    ??????????. ????????

24
????????????
  • 1-?? ???????? ?????
  • ??????? ???? ???????? ???
  • ???????? ? ???????? ?? ???????? (????????)
    ?????????
  • ???? ?????????? ?? ????? ? ??????? ?? ???? ???
  • ????????? ? ???????? ???? ?? ????? ???????

25
????????????
  • 2-?? ???????? ?????
  • ??????? ???????????? ?? 1-?? ???????? ?????
  • ? ????????? ???? ??????, ???????? ?? ???? ??
    ????????? ???? (??? ? ???????? ?? ??????? ??????)

E-mail-?? ?????? ?? ??????
?????? ?????? ?? ???????
26
????????????
  • 3-?? ???????? ?????
  • ??????? ???????????? ?? 2-?? ???????? ?????
  • ???????????? ??????????? ????? ???????? ??
    "?????? ?????? ?? ????????? ????"

27
????????????
  • 4-?? ???????? ?????
  • ??????? ???????????? ?? 3-?? ???????? ?????
  • ? ????????? ??? ???-????? ???? ??????, ?????????
    ??????? ? ??????? ???????? ?????????
    (multi-valued attribute) ?? ???? ????

???? ????? ??? ????? ?????
???? ????? ??? ????? ??????
28
????????????
  • ?????? ?? ????????????? ????? (? 4-?? ????????
    ?????)

PRODUCT
VENDOR
CATEGORY
STORE
TOWN
29
Constraints
  • ????????????? (constraints) ??????? ???????, ??
    ???????, ????? ?? ????? ?? ????? ??????????
  • ??????????? ?? ???????? ???? (primary key
    constraint)
  • ?????????? ???? ? ???????? ?? ????? ?????
  • ??????????? ?? ???????? ???? (unique key
    constraint)
  • ??????????? ? ?????? ?????? (??? ????? ??????) ??
    ????????

30
Constraints
  • ??????????? ?? ?????? ???? (foreign key
    constraint)
  • ?????????? ? ?????? ?????? ? ???? ?? ?????
    ???????
  • ??????????? ?? ???????? (check constraint)
  • ??????????? ? ?????? ?????? ?????????? ??????
    ???????
  • ????????
  • (hourgt0) AND (hourlt24)
  • name upper(name)

31
???????
  • ????????? ????????? ????????? ?? ??????? ??
    ???????? ? ?????? ?????? ??? ????? ?? ??????
  • ??????? ?? ??? ?????? ???????
  • ?????????? ?? ???-????? ? B-??????? ???
    ???-???????
  • ????? ?? ????? ?????? (????? ?????????) ???
    ????????
  • ?????????? ? ??????????? ?? ??????????? ??????? ?
    ??-?????

32
?????? SQL
  • SQL (Structured Query Language)
  • ?????????????? ???????????? ???? (????????) ??
    ??????????? ?? ?????????? ???? ?? ?????
  • SQL-92 ????????? ?? ?????? RDBMS
  • SQL-99 ??????? ??? ??????
  • SQL ????????
  • ?????????, ???????, ????????? ?? ??????? ? ?????
    ?????? ? ??
  • ???????, ?????????, ????????, ??????? ? ?????????
    ?? ?????

33
?????? SQL
  • SQL ?? ?????? ??
  • DDL Data Definition Language
  • ??????? CREATE, ALTER, DROP
  • DML Data Manipulation Language
  • ??????? SELECT, INSERT, UPDATE, DELETE
  • ?????? ?? SQL SELECT ??????

SELECT Town.name, Country.name FROM Town,
Country WHERE Town.country_id Country.id
34
Stored procedures
  • ????????? ?? ???? ???? (???????? ?????????,
    stored procedures)
  • ????????? ???, ????? ?? ????????? ? ????? ??????
    ?? ???? ?????
  • ??????? ????? ??-????? ?? ?????? ???
  • ??????? ?? ??????? ????????
  • ????? ?? ??????? ?????????
  • ????? ?? ?????? ????????
  • ???????? ????????
  • ?????????? ?? ?????? (record set)

35
Stored procedures
  • ????????? ?? ???? ???? ?? ????? ?? ????,
    ?????????? ?? SQL
  • T-SQL ? Microsoft SQL Server
  • PL/SQL ? Oracle
  • ?????? ?? ????????? ?? T-SQL

CREATE PROCEDURE sp_GetInventory _at_location
varchar(10)AS SELECT Product, Quantity FROM
Inventory WHERE Warehouse _at_location
36
??????? (views)
  • ????????? ????????????? ????????? SQL SELECT
    ??????, ????? ?? ????????? ???? ???????
  • ????????? ???????? ?? ?????? SQL ??????
  • ???????? ?? ?? ???? ????????? ?? ???????????
  • ?? ????? ?????????? ?? ?? ????? ????? ??? ?????
    ???????
  • ????? ?? ?? ????? ???? ??? ????? ???????
    (???????????? ?? ???????)

37
??????? (views) ??????
T_COMPANY
T_TOWN
T_COUNTRY
  • CREATE VIEW V_BG_COMPANY AS
  • SELECT
  • T_COMPANY.id AS id,
  • T_COMPANY.company AS company
  • FROM T_COMPANY INNER JOIN
  • (T_TOWN INNER JOIN T_COUNTRY ON
  • T_TOWN.country_idT_COUNTRY.id)
  • ON T_COMPANY.town_idT_TOWN.id
  • WHERE
  • T_COUNTRY.country"????????"

V_COMPANY_BG
38
??????? (triggers)
  • ????????? (triggers) ?? ????????? ?? ???? ????,
    ????? ?? ????????? ??? ??????? ???????, ????????
  • ??? ???????? ?? ?????
  • ??? ??????? ?? ?????
  • ??? ????????? ?? ?????
  • ????????? ????? ?? ????????? ????????????
    ????????? ?? ???????
  • ??????? ?? ??????? ??? ????????
  • ????????? ?? ?????? ? ???????

39
??????? ??????
  • ????? ??????? ? ????? ?? ?????
  • ??????, ????? ??? ???????? ?? ???? ????? ??????
    "Ltd." ??? ????? ?

CREATE TABLE COMPANY( id int NOT NULL, name
varchar(50) NOT NULL)
CREATE TRIGGER trg_COMPANY_INSERT ON COMPANY
FOR INSERT AS UPDATE COMPANY SET name name
' Ltd.' WHERE id (SELECT id FROM inserted)
40
??????????
  • ???????????? ?? ????????????????? ?? ????????
    (?????? ??? ?????? ?????), ????? ?? ??????????
    ????????
  • ??? ?? ?????????? ???????? ???????? ?????? (????
    ???? ????)
  • ??? ????? ?? ?????????? ?? ?? ????????? ??????
  • ??????
  • ??????? ??????????? ?? ???? ?? ???? ?????? ?
    ????? (??????? ???????)
  • ??? ????????? ??? ????????? ?? ?????? ????????,
    ??????? ?????? ????????

41
???????????? ?? ????????????
  • ???????????? ? ???????? RDBMS ??????? ???? 4
    ????????????, ?????? ????? ?? ??????? ACID
    ??????????
  • Atomicity ??????????
  • ????????? ?? ?????? ??? ????
  • Consistency ?????? ?? ???????
  • ?????? ?????? ?????? ????????????
  • Isolation ???????? ?? ???????
  • ????????? ?????????? ?? ????????? ???? ?? ?????
    ?? ?? ??????
  • Durability ?????????? ?? ???????
  • ??? ???? ?????????? ???? ??????????, ?? ?? ????
    ?? ???? ????????

42
?????????? ??????
  • ????? ??????? ? ??????? ??????
  • ?????????? ?????????? ??? ???????? ?? ???? ??
    ?????? ?? ??????

CREATE TABLE ACCOUNT( id int NOT NULL,
balance decimal NOT NULL)
CREATE PROCEDURE sp_Transfer_Money( _at_from_acc
int, _at_to_acc int, _at_ammount decimal )
AS (???????? ??????????)
43
?????????? ??????
BEGIN TRANSACTION UPDATE ACCOUNT set balance
balance - _at_ammount WHERE id _at_from_acc IF
_at__at_rowcount ltgt 1 BEGIN ROLLBACK TRANSACTION
RAISERROR ('Invalid source account!', 16, 1)
RETURN END UPDATE ACCOUNT set balance balance
_at_ammount WHERE id _at_to_acc IF _at__at_rowcount ltgt 1
BEGIN ROLLBACK TRANSACTION RAISERROR
('Invalid destination account!', 16, 1)
RETURN END COMMIT TRANSACTION
44
?????????? ? ????????
  • ???????????? ????? ?? ????????? ???? ?? ????????
    (isolation levels)
  • ??-??????? ???????? ????????? ??-?????
    ??????????????, ?? ?????? ??-????? ? ????????
    ??????? ?? ??-?????

45
????????? ? MS SQL Server ??????????
  • ??????? ?? SQL Server
  • ?????????? ?? SQL Server 2000
  • ????????? ????? ? ???????????
  • ????????? ? T-SQL
  • Data Definition Language (DDL) ???????
  • Data Manipulation Language (DML) ???????
  • Database Console Commands (DBCC) ???????
  • ????????? ?????????
  • ?????????? ? SQL Server

46
??????? ?? SQL Server
  • ??????? ?? ???????????? ?????
  • ?????? ?? SQL Server
  • ?????? ?? SQL Server ?????????? ???
    System.Data.SqlClient
  • SQL Server 7.0
  • SQL Server 2000

47
???????? ?????????? ?? SQL Server 2000 ??????
  • MSSQLSERVER ?????? ??????
  • ????????? ?????? ?? SQL Server ?????? ????? ??
    ??????????? ?? ????????????
  • SQLSERVERAGENT SQL Server Agent
  • ????????? SQL ???????, ???????? ??????????
    ???????? ? ???????? ?? ????????
  • MSSQLServerADHelper
  • ????? ?? ?????????? ? Active Directory
  • MSSQLServerOLAPService
  • ????? ?? OLAP ?????? ?? ?????

48
???????? ?????????? ?? SQL Server 2000
???????????
  • Enterprise Manager
  • ???????? ????????????? ?? SQL ??????
  • ?????????? ?? ???? ????? (?????????, backup,
    ??????????????, ?????????????)
  • ?????????? ?? ?????? ? ?????? (???????, ???????,
    ???????, ?????????, )
  • Query Analyzer
  • ?????????? ? ?????? ?? SQL ??????
  • DTS (Data Transformation Services)
  • ?????????, ????????????? ? ??????????? ?? ?????
    ?? ? ??? ?????? ?????????

49
???????? ?????????? ?? SQL Server 2000
???????????
  • SQL Profiler
  • ???????????? ?? ??????? ? ??????????? ??
    ?????????????????? ?? SQL Server
  • SQL XML
  • ??????????? ?? ????? ? Web ????? (? Internet
    Information Services IIS)
  • ????????? SQL ?????? ? ????? XML
  • Analysis Manager
  • ????????? ?? Data Warehousing (OLAP)
  • ??????? ?????????? ?? ?????????? ?????????? ??????

50
???????????? ?? SQL Server
  • ????????? ????? ? ???????????
  • Visual Studio .NET 2002/2003
  • SQL Servers ? Server Explorer-?
  • ?????? ? ???????, ???????, ???????, ?????????,
    ????????
  • ????????? / ????????? / ??????? ? ????????? ??
    stored ?????????
  • DB ???????
  • Query Analyzer
  • ?????? ??? ????????? ?????????
  • ?????????? ?? SQL ??????
  • ??????????? ?? SQL ??????

51
???????????? 1
  • ?????? ? ??????????? Query Analyzer ?? MS SQL
    Server

52
???????????? 2
  • Visual Studio .NET 2003 ? ??????????? ?? ?? SQL
    Server
  • ?????? ??? Server Explorer
  • ????????? ?? DB Project
  • ???????????? ?? T-SQL (????????? ????????? ???
    VS.NET 2003)
  • ????????? ?? stored ?????????

53
????????? ? T-SQL
  • ?????? ???????
  • Data Definition Language (DDL)
  • ????????? ? ?????????? ?? ???????? ? ?????? ??
    ????? (???????, ???????, ???????, ...)
  • Data Manipulation Language (DML)
  • ?????? ? ??????? ? ???????? ??????????? ?? ?
    ?????? ?? ????? (?????????, ???????, ...)
  • DataBase Console Commands (DBCC)
  • ???????? ????????? ?????????

54
Data Definition Language (1/2)
  • MS SQL Server 2000 ???????? SQL-92 DDL, ??
    ??????? ? ?????????? ??????????
  • ??????? ?? ?????????? ? ?????? ?
  • ???? ?? ?????
  • ???????, ???????, ???????, constraints
  • ???????
  • ????????? ?????????
  • ?????

55
Data Definition Language (2/2)
  • ?????? ???????
  • ?????????? / ??????????? ?? ??????
  • CREATE
  • ALTER
  • DROP
  • ??????? ?? ??????
  • GRANT
  • DENY
  • REVOKE

56
?????? DDL ???????
  • ????????? ?? ??????
  • CREATE

57
?????? DDL ???????
  • ??????? / ?????????? ?? ??????
  • ALTER

58
?????? DDL ???????
  • ????????? ?? ??????? ? ??????

59
?????? DDL ???????
  • ????????? ?? ??????
  • DROP

60
?????? DDL ???????
  • ???????? ?? ????? ?? ??????
  • GRANT
  • DENY
  • REVOKE

61
???????????? 3
  • DDL ??????? ? SQL Server 2000

62
Data Manipulation Language
  • SELECT
  • INSERT
  • UPDATE
  • DELETE

SELECT FROM Users
INSERT INTO Users (FirstName, LastName, Email)
VALUES ('Branimir', 'Giurov', 'branimir_at_nospam.bg
')
UPDATE Users SET Email'branimir_at_nospam.bg' WHERE
UserID 1
DELETE Users WHERE UserID1
63
DML ???????
  • SELECT
  • ?????????
  • ??????

SELECT select_listINTO new_table_nameFROM
table_listWHERE search_conditionsGROUP BY
group_by_listHAVING search_conditionsORDER
BY order_list ASC DESC
SELECT FirstName, LastName, Mobile as GSM FROM
Users ORDER BY LastName
64
DML ???????
  • INSERT
  • ?????????
  • ??????

INSERT INTO (ColumnList) VALUES (ValuesList)
INSERT Users (FirstName, LastName, Phone,
Mobile, Email) VALUES ('Branimir',
'Giurov', '797461', '359 88 792 5209',
'branimir_at_abv.nospam.bg')
65
DML ???????
  • UPDATE
  • ?????????
  • ??????

UPDATE table_name SET colname1value1,
colname2value2 WHERE condition
UPDATE Users SET ?mail'branimir_at_dir.nospam.bg' WH
ERE UserID 118
66
DML ???????
  • DELETE
  • ?????????
  • ??????

DELETE FROM TableName WHERE Condition
DELETE FROM Users WHERE UPPER(LastName)
'GIUROV' AND Mobile LIKE '359'
67
???????????? 4
  • D?L ??????? ? SQL Server 2000

68
DBCC ??????? ? SQL Server
  • DBCC Database Console Commands
  • ???????????? ?? ?????????? ?? ??????????? ??
    ??????????
  • ?????????
  • ?????????
  • ?? ?????? ????? ???? ?? ?????
  • ??????? ? ??????? ?????
  • ???????? ?? ???????
  • ????????? ?? ???????? ?? ???????
  • ?? ?????? ???? ?????
  • ?? ???????, ?????? ? ??.

69
??-????? DBCC ???????
  • ?? ?????????
  • DBCC DBREINDEX
  • DBCC INDEXDEFRAG
  • DBCC SHRINKDATABASE
  • DBCC SHRINKFILE
  • DBCC UPDATEUSAGE (sysindexes)
  • ?? ???????? ?? ???????
  • DBCC OPENTRAN
  • DBCC INPUTBUFFER
  • DBCC OUTPUTBUFFER
  • DBCC PROCCACHE
  • DBCC SQLPERF ( LOGSPACE )
  • DBCC USEROPTIONS

70
??-????? DBCC ???????
  • ?? ?????????
  • DBCC CHECKALLOC
  • DBCC CHECKCATALOG
  • DBCC CHECKCONSTRAINTS
  • DBCC CHECKDB
  • DBCC CHECKFILEGROUP
  • DBCC CHECKIDENT
  • DBCC CHECKTABLE
  • ?????
  • DBCC DllName(FREE)
  • DBCC HELP
  • DBCC PINTABLE
  • DBCC TRACEON / TRACEOFF
  • DBCC UNPINABLE

71
???????????? 5
  • DBCC ??????? ? SQL Server 2000
  • TODO ?? ?? ??????? ?????? ? ?? ?? ????? ????????
    screenshot (Demo-5-DBCC-Commands.png)

72
???????????? 6
  • ?????????????? ?? MS SQL Server SQL Server
    Books Online

73
????????? ?????????
  • ????????? ????????? (Stored Procedures)
  • ????????? ? ????? ?? ??????
  • ???????? ? ????????????? ?????????
  • ????????? ?? ????????? sp_ ? usp_
  • ????????? ????????? ????????? (Extended Stored
    Procedures)
  • ????????? ? ????? ?? ??????
  • ????????? ?? ????????? xp_

74
????????? ?????????
  • ?????????
  • ??????

CREATE PROC procedure_name _at_parameter
data_type VARYING default OUTPUT
     ,...n AS sql_statement ...n
CREATE PROCEDURE TopExpensiveProducts _at_count
int AS SET ROWCOUNT _at_count SELECT
ProductName, UnitPrice FROM Products ORDER BY
UnitPrice DESC
75
????????? ????????? ??????
CREATE PROC usp_InsertAuthor ( _at_au_fname
varchar(50), _at_au_lname varchar(50) ) AS INSER
T Authors (au_fname, au_lname, active) VALUES
(_at_au_fname, _at_au_lname, 1) DECLARE
_at_inserted_au_id bigint SET _at_inserted_au_id
(SELECT _at__at_identity) SELECT _at_inserted_au_id GO
76
???????????? 7
  • ?????????, ?????????? ? ????????? ?? stored
    ????????? ? SQL Server
  • TODO ?? ?? ??????? ?????? ? ?? ?? ????? ????????
    screenshot (Demo-7-Stored-Procedures.png)

77
??????????
  • ?????????? ??????? ??????, ????? ?????? ?? ????
    ????????? ????????
  • ??? ????????? ??????, ???????????? ?? ???????
    (rollback) ? ????????? ?? ?? ???????
  • ?????? ??????????
  • ??????? ???????? ?? SQL Server
  • ?????????????? ???? DTC (Distributed
    Transaction Coordinator)
  • ???? ?? ???????? ?? ????????????

78
?????????? ? SQL Server
  • ??????? ?? ?????? ? ??????????
  • BEGIN TRANSACTION
  • ??????? ???? ??????????
  • COMMIT TRANSACTION
  • ??????????? ???????? ??????????
  • ROLBACK TRANSACTION
  • ??????? ???????? ??????????
  • SET TRANSACTION ISOLATION LEVEL
  • ?????? ?????? ?? ???????? (READ COMMITTED, READ
    UNCOMMITTED, REPEATABLE READ, SERIALIZABLE)

79
?????????? ? SQL Server ??????
TODO ?? ?? ??????? ??????? ??????? ?????? ? ??
?? ????? ????-????? ?? ???
80
???????????? 8
  • ?????????? ? ???????? ? SQL Server
  • TODO ?? ?? ????????? ????, ???????? ??
    ?????????? ???????? ???. ?? ?? ????? ????????
    screenshot (Demo-8-Transactions-and-Isolation.png)

81
ADO.NET ?????????? (1)
  • ?????? ?? ?????? ? ???????
  • ??????? ? ?????????
  • ???????? ?? ????????????
  • ??????????? ?? ADO.NET
  • Data Providers
  • ?????? ? MS SQL Server
  • SqlConnection
  • ?????????? ?? ??????? ?????
  • SqlCommand, SqlDataReader
  • ???????????? ??????

82
ADO.NET ?????????? (2)
  • ?????? ? ????? ???? ?? ????? ???? OLE DB
  • ?????????? ?? ????????? ?????
  • ?????? DataSet, ?????-?????????? DataSet-?
  • ????????? DataTable ? DataRelation
  • ?????? ????? ADO.NET ? XML
  • ?????? DataView
  • ?????????? ?? DataAdapter
  • ??????? ???????? ?? ?????? ? ????? ? ??????????
    ?????

83
?????? ?? ?????? ? ?????
  • ??????? ????? (connected model)
  • ????????? ?????? ? ??????? (online)
  • ?????? ?? ??????????
  • ???????? ???? ????????????
  • ????????? ????? (disconnected model)
  • ???????? ? ??????? ?? ??????????? offline ??
    ????????? ?? ????? ? ???????? ?? ??????? ??
    ???????
  • ?????? ?? ??????????
  • ???????
  • ?????? ?? ????? ???? Web ??????
  • ?????????? ? XML

84
??????? ?????
  • ?????????? ?? ?????? ?? ????? ? ?????, ? ?????
    ?????? ??? ?????? ?? ????????? ?? ???????

85
??????? ????? ?? ? ??????
  • ??????????
  • ??????? ? ??-????? ?? ????????????? (??-?????
    ?????? ?? ????????????)
  • ????????? ????? ????????????? ?????? ?? ?????????
    ??-?????
  • ??-????? ?????????? ?? ?????? ? ???????? ??????
    ?? ???????
  • ???????????
  • ????? ?? ????????? ??????? ??????
  • ???????? ??? ????? ?? ????????????

86
????????? ?????
  • ???????????? ?? ??????? ?? ??????????? ??????? ??
    ?????????? ?? ??????? ?? ?????? ??????? ???
    ???????

87
????????? ????? ?? ? ??????
  • ??????????
  • ???????? ?? ???????, ?????? ??? ?????, ? ?
    ?????????? ????? ?????? ??? ?????? ? ???????????
    ???? ?? ?????
  • ????? ??????????? ????? ?? ?? ????????
    ?????????????
  • ?????????????? ? ????? ?????
  • ???????????
  • ??????? ?? ?????? ?? ??????
  • ???????????? ?????? ?? ???????? ?? ???????????
    ????? ?????????? ??????

88
???????? ?? ????????????
  • ?????????? ??????????
  • ???-????? ?????? ???? ???? ??????????
  • ??????????
  • ?????? ?????????? ?? ?? ???? ?????
  • ???????????
  • ??????? ?? ???????????????? ??????? ?????????????
  • ??????
  • ?????????? ???????? ?? MS Access

89
???????? ?? ????????????
  • ????????? ?????????? (??????-??????)
  • ??????????????? ????????? ? ?????? ????????? ??
    ????????? ?? ???? ?????
  • ??????? ?? ?????????? ??? ?????? ????
  • ??????????
  • ??? ????????? ?? ????????????????
  • ???????????
  • ???? ???????????? ???????? ? ??????????? ??
    ????? ???? ???????
  • ???????
  • MS SQL Server ? MS Query Analyzer
  • MS Exchange ? MS Outlook

90
???????? ?? ????????????
  • ????????? ??????????
  • ?????????? ?????? ?????????????? ?? ? ????????
    ??????
  • ??????????
  • ???????? ?? ???????????????? ????? ?????????????
    ?????????, ?????? ??????? ? ?????????? / ??????
    ?? ???????
  • ???????????
  • ??-?????? ?????????
  • ?????? ?????? ?? ??????????? ?? ???????????
  • ??????
  • ASP.NET Web-?????????? ? ASP.NET Web ?????? ? MS
    SQL Server

91
???????? ?? ????????????
  • ??????????? ??????????
  • ??????? ? ?????? ?? 3 ????????? ????
  • ?????????? ?? ???????? ?? ??? ?????? ??
    ??????????? ?? ????????????????
  • ??????????
  • ?????????? ?? ???????? ?????????? ?? ?????????
    ????? ?? ???????????????? ???? ???????? ?????????
  • ???????????
  • ????? ?????? ?????? ?? ?????????? ? ?????????? ??
    ??????? ?? ??????? ??????
  • ???????? ?????? ????????? ? ??-?????? ??????? ??
    ??????????

92
? ??????? ?? ???????
????????????, ????????????
  • ???? ?? ????????

93
????? ? ADO.NET?
  • ????? ?? ??????? ?? ?????? ? ?????
  • ????? ?? ???????, ??????????, ????????? ? ?????
    ?????? ?? ?????? ?? ????? ???? ?????? .NET
    ???????? ??????????
  • ????????? ????? ?? ?????? ? ?????
  • ????????? ?????????? ?? ?????? ? ?????????? ?????
  • ????????? ?????? ? XML
  • ????????? ?? ADO (Windows ?????????? ?? ?????? ??
    ???? ?? ?????)

94
Namespace-? ?? ADO.NET
  • ???????????? ?? ????? ?? ADO.NET
  • System.Data ??????? ???????????? ??????? ??
    ADO.NET
  • System.Data.Common ???? ??????? ?? ?????? data
    Provider-?
  • System.Data.SqlClient ? System.Data.SqlTypes
    Data Provider ??????? ?? ?????? ?? SQL Server
  • System.Data.OleDb ?????? ? OleDB
  • System.Data.Odbc ?????? ? ODBC
  • System.Xml ?????? ? XML

95
???????? ?? ADO ??? ADO.NET
  • ADO

ADO.NET
XxxConnection
Connection
XxxTransaction
XxxCommand
Command
Recordset
DataSet
XxxDataReader
XxxDataAdapter
96
?????????? ?? ADO.NET
DataSet
DataSet
ODBC .NET Data Provider
Oracle .NET Data Provider
OleDb .NET Data Provider
SQL Server .NET Data Provider
97
Data Provider-? ? ADO.NET
  • Data Provider-??? ?? ??????????? ?? ???????,
    ????? ?????????? ?????? ? ???????? ???? ?? ?????
  • ?? ?????????? RDBMS ??????? ?? ????????? ????????
    Data Provider-?
  • ?????????? ????????????? ????????? ????????
    ????????? ?? ?????? ??? ????????? ?? ?????
  • ????????? ?? ?? 4 ??????? ??????
  • Connection ?? ?????? ? ??????
  • Command ?? ?????????? ?? SQL
  • DataReader ?? ????????? ?? ?????
  • DataAdapter ?? ?????? ? DataSet

98
Data Provider-? ? ADO.NET
  • ? ADO.NET ??? ??????? ?????????? Data Provider-a
  • SqlClient ?? ?????? ??? SQL Server
  • OleDB ?? ?????? ??? ????????? OleDB
  • Odbc ?? ?????? ??? ????????? ODBC
  • Oracle ?? ?????? ? Oracle
  • ????? ?????????? ????????? Data Provider-? ??
    ?????? ? ????? RDBMS
  • IBM DB2
  • MySQL
  • PostgreSQL
  • Borland Interbase / Firebird

99
ADO.NET ? ???????? ?????
SqlDataReader
  • ??????? ?? ?? ??????? ?? ????????? ?? ????????
  • ???????? ?? ?????? (SqlConnection)
  • ?????????? ?? ??????? / ??????? (SqlCommand)
  • ????????? ?? ???????? ???????? ???? ???????? ??
    ???????? ???? ????? (SqlDataReader)
  • ????????? ?? ??????
  • ????????? ?? ????????

SqlCommand
SqlConnection
100
ADO.NET ? ?????????? ?????
  • ??????? ?? ??????? ? DataSet ????? ? ???????? ??
    ?????????????
  • ???????? ?? ?????? (SqlConnection)
  • ??????? ?? DataSet (???? SqlDataAdapter)
  • ????????? ?? ????????
  • ?????? ??? DataSet-a
  • ???????? ?? ??????
  • ???????? ?? ??????? ?? ??????? ?? ???????
  • ????????? ?? ????????

DataSet
SqlDataAdapter
SqlConnection
101
ADO.NET, XML ? Web ??????
  • ADO.NET ? ????? ??????????? ? XML
  • ????? ?? ???????? ? ????????? ????????
    ??????????? Web ??????
  • Web-???????? ????????? ?????? ???? ?? ???????????
    ??????????
  • ???????? ?????? ?????????? ??? ???????

102
SqlClient Data Provider
  • SqlConnection ??????????? ???????? ? MS SQL
    Server
  • SqlCommand ????????? ??????? ????? SQL Server-?
    ???? ???? ?????????? ??????
  • SqlDataReader ????? ?? ????????? ?? ????? ??
    SQL Server-?
  • ??????? ?? ???????? ?? ????????? ???????
  • SqlDataAdapter ?????? ????? ????? DataSet
    ?????? ? SQL Server
  • ????????? ????????? ?? DataSet ? ????? ?
    ?????????? ?? ????????? ?????
  • ???? ?? ?? ????? ??? ?? ??????????? ?? ???????? ?
    ?????? ?????

103
??????? ?? ????????? ? SQL Server 2000
  • ?????? ????????????
  • Windows (???? ?????????? ? ??)
  • ??????? ????????? ? ??????????
  • ????????? ?? ??????
  • ???????? ?? ??????
  • ?????????? ?? ???????
  • ??????? (Windows ? SQL Server)
  • ??????? ?? ???????????? ? ???????? ??????
  • ????? ??????? ? ?????????

104
???????? ??? ?? ?????? ? ???? ?? ?????
(Connection String)
  • ???????? ???????????, ?????????? ?? ?????????????
    ?? ?????? ? ?????? ?????
  • ??????? ?????????
  • Provider ??? ?? ???????? ?? ??????
  • Data Source ????????????? ?? ??????
  • User ID/Password
  • Integrated Security
  • Persist Security Info (False)
  • ??????

Serverlocalhost DatabasePubs Integrated
Securitytrue Persist Security Infofalse
105
???????????? 9
  • ?????? ??? SqlConnection
  • ?????????? ?? Connection String
  • ?????????? ?? SqlConnection
  • ????????????? ?? SqlConnection ?????
  • ???????? ?? SqlConnection
  • ???????? ?? ??????????? ?? ????????
  • TODO ?? ?? ????????? ?????????????? ? ?? ??
    ????? ???????? screenshot

106
Connection Pooling
  • "Database Connection Pooling" ? ?????????
    ???????, ?????
  • ????????? ??-????????? ?????????? ?? ???????? ???
    ?????? ?? ?????
  • ????????? ??????????????????
  • ???????? ?????? ????
  • ??? ???????? ?? ?????? ?? ?? ????? ?????? ?? ?.
    ???. "???" (connection pool)
  • ??? ??? ???? ???????? ?? ?????? ????
  • ??? ????????? ?? ?????? ?? ?? ????? ? ???? ??? ??
    ?? ???????? ?????????
  • ?? ???????????? SqlClient ?????? ???

107
??? ?? ???????? ??? SqlConnection
  • ??????????? ???????? ? ????????? ?? ????????
    (?????? ? ????)
  • Open() ? Close() ????????
  • ?????????? ???????? ? ????????? ?? ????????
    (?????? ? ????)
  • ???????? ? ???? ??? ?????? ? DataAdapter-?
  • ?????????? ?? Dispose() ??????
  • ???????? ???????? ?? connection pool-?

108
????????? ?? SqlConnection
  • ??????? ?????????? ?? ????????
  • StateChange ? InfoMessage
  • StateChangeEventArgs ??????
  • ???? ?????????? ?? ???? ????? ?? ? ??????? ?
    ???????? ??? ?????? ?????
  • CurrentState ? OriginalState
  • SqlInfoMessageEventArgs
  • Errors SqlErrorCollection ???????? ?? ?????????
    ?? ?????? ? ??????????????
  • Message ??????????? ?? ??????
  • Source ???? ? ?????????? ????????/??????????????
    ??

109
StateChange ??????
private const string CONNECTION_STRING
"Server." " DatabasePubs Integrated
Securitytrue" private SqlConnection
mConn private void InitConnection() mConn
new SqlConnection(CONNECTION_STRING)
mConn.StateChange new
StateChangeEventHandler(ConnStateChange)
mConn.Open() private void ConnStateChange(objec
t sender, StateChangeEventArgs e)
Debug.WriteLine("SQL Server connection "
e.OriginalState.ToString() " --gt "
e.CurrentState.ToString())
110
InfoMessage ??????
private const string CONNECTION_STRING
"Server. " "DatabasePubs Integrated
Securitytrue" private SqlConnection
mConn private void InitConnection() mConn
new SqlConnection(CONNECTION_STRING)
mConn.InfoMessage new
SqlInfoMessageEventHandler(ConnInfoMessage)
mConn.Open() private void ConnInfoMessage(objec
t sender, SqlInfoMessageEventArgs e)
Debug.WriteLine("SQL Server message "
e.Message " Source " e.Source)
111
???????????? 10
  • ???????????? ?? ????????? StateChange ?
    InfoMessage

112
?????????? ?? ??????? ?????
  • ??????? ?? ?? ??????? ?? ????????? ?? ????????
  • ???????? ?? ?????? (SqlConnection)
  • ?????????? ?? ??????? / ??????? (SqlCommand)
  • ????????? ?? ???????? ???????? ???? ???????? ??
    ???????? ???? ????? (SqlDataReader)
  • ????????? ?? ??????
  • ????????? ?? ????????

SqlDataReader
SqlCommand
SqlConnection
113
????????? ? ???????? ?????
114
?????? SqlCommand
  • ????????? ????????? ??? SQL ?????? ??? ?????????
    ?????????
  • ??-????? ????????
  • Connection ????? / ?????? SqlConnection-? ??
    ?????????
  • CommandType ??? ???????
  • CommandType.StoredProcedure
  • CommandType.TableDirect
  • CommandType.Text
  • CommandText SQL ?????? ??? ??? ?? ?????????
    ?????????
  • Parameters ?????????

115
?????? SqlCommand
  • ??-????? ??????
  • ExecuteScalar()
  • ????? ???????? ???????? (??????? ?????? ?? ??????
    ??? ?? ?????????)
  • ????????? ???????? ? System.Object
  • ExecuteReader()
  • ????? ?????? (SqlDataReader)
  • CommandBehavior ?????? ?????????
  • ExecuteNonQuery()
  • ????? ???? ?? ??????????? ?????? (int)
  • ExecuteXmlReader()
  • ????? XmlReader ?? ?????????
  • ???????? ?? ???? ? SqlClient

116
?????? SqlDataReader
  • ??????? ???????????????? ?? ?????? (??????)
    ???????? ?? ????????? ???????
  • ???????? ? ???? ?? ?????? (read-only)
  • ???????? ? ??????????? (forward-only)
  • ??-????? ?????? ? ????????
  • Read() ????????? ??????? ?????? ? ????? false
    ??? ???? ??????? ?????
  • Item (??????????) ??????? ?????????? ?? ??????
    ?? ??? ??? ??????
  • Close() ??????? ??????? ?????? ????????????
    ?? ?? ????!

117
??????? ????? ??????
using System using System.Data using
System.Data.SqlClient class TestSqlCommand
private const string CONNECTION_STRING
"Server." " Databasepubs Integrated
Securitytrue" private const string
COMMAND_SELECT_AUTHORS "SELECT au_fname,
au_lname, phone FROM authors" static void
Main() SqlConnection con new
SqlConnection(CONNECTION_STRING)
con.Open() try (???????? ??????????)
118
??????? ????? ??????
SqlCommand command new
SqlCommand(COMMAND_SELECT_AUTHORS, con)
SqlDataReader reader command.ExecuteReader()
using (reader) while
(reader.Read()) string
firstName (String) reader"au_fname"
string lastName (String) reader"au_lname"
string phone (String) reader"phone"
Console.WriteLine("0 1 - 2",
firstName, lastName, phone)
finally con.Close()

119
???????????? 11
  • ?????????? ?? ??????? ????? SqlCommand ?
    SqlDataReader

120
????????? ?? SqlCommand
  • ?????? ?? ????????? SqlCommand ????? ?? ???????
    ??????
  • ?????????
  • ?? Server Explorer ??? VS.NET
  • ?? Toolbox ??? VS.NET

SqlCommand cmd new SqlCommand( "SELECT
FROM Products, con)
121
???????????? 12
  • ????????? ?? SqlCommand ??? VS.NET ???? Server
    Explorer ? ???? Data ???????????? ?? Toolbox-?

122
?????? SqlParameter
  • ????? ????????????? SqlParamer-????
  • SQL ???????? ? ????????? ????????? ????? ?? ????
    ??????? ? ???????? ?????????
  • ?? ?? ????????? ???? Parameters ?????????? ??
    SqlCommand ?????
  • ??-????? ????????
  • ParameterName ??? ?? ??????????
  • DbType ??? (NVarChar, Timestamp, )
  • Size ?????? ?? ???? (??? ???)
  • Direction ??????, ???????, ...

123
???????????? ?????? ??????
private void InsertShipper(string aName, string
aPhone) SqlCommand cmdInsertShipper new
SqlCommand( "INSERT INTO
Shippers(CompanyName, Phone) " "VALUES
(_at_Name, _at_Phone)", dbConnection) SqlParameter
paramName new SqlParameter("_at_Name",
SqlDbType.NVarChar) paramName.Value
aName cmdInsertShipper.Parameters.Add(paramNa
me) SqlParameter paramPhone new
SqlParameter("_at_Phone", SqlDbType.NVarChar)
paramPhone.Value aPhone cmdInsertShipper.Pa
rameters.Add(paramPhone) cmdInsertShipper.Exe
cuteNonQuery()
124
???????? ???? ?????????
  • ??????????? ?? ???????????-????????? ????????
    ???? ? ?????????? ?? ????? ???? ?? ?????
  • ??? SQL Server ? MS Access ?? ????????? Identity
    ? AutoNumber ??????
  • ?????????? ?? ?? ?????? ??? ????????
  • ?????? ?? ????????? ?? ???????????-???????????
    ???????? ???? ?? ADO.NET

SELECT _at__at_Identity
SqlCommand cmdSelectIdentity new
SqlCommand("SELECT _at__at_Identity", dbCon) decimal
insertedRecordId (decimal)
cmdSelectIdentity.ExecuteScalar()
125
???????????? 13
  • ?????? ? ???????????? SQL ??????
  • ????????? ?? ????????? ?? ?????
  • ???????? ?? ????????? ? ????????? ?? ???????????
    ?? ???? ???????? ????

126
?????????? ?? ??????????
  • ?????? ? ?????????? ? SQL Server

BEGIN TRANSACTION DECLARE _at_orderDetailsError
int, _at_productError int DELETE FROM "Order
Details" WHERE ProductID42 SELECT
_at_orderDetailsError _at__at_ERROR DELETE FROM Products
WHERE ProductID42 SELECT _at_productError
_at__at_ERROR IF _at_orderDetailsError 0 AND
_at_productError 0 COMMIT TRANS ELSE
ROLLBACK TRANS
127
?????????? ?? ??????????
  • ?????? ? ?????????? ? ADO.NET
  • ????????? ?? ??????????
  • ????????? ?? ??????? ? ?????? ??????????
  • ????????????? / ????????? ?? ??????????

SqlTransaction trans dbConnection.BeginTrans
action()
command.Transaction trans
trans.Commit() trans.Rollback()
128
?????????? ?? ??????????
  • ?????? ?? ???????? ?? ???????? ? ????????????
    IsolationLevel
  • ???? ?? ???????? ?? SqlTransaction
  • ReadUncommited
  • ReadCommited
  • RepeatableRead
  • Serializable
  • Unspecified
  • ??????

SqlTransaction trans dbConnection.
BeginTransaction(IsolationLevel.Serializable)
129
???????????? 14
  • ?????????? ? ADO.NET

130
?????? ? ????? ???? ?? ?????
  • ADO.NET ???????? ?????? ? ???????? ???? ?? ?????
    (????? SQL Server) ???? ????????? Data Providers
  • OLE DB ???????? ?? ??????????
  • Oracle ???????? ?? ??????????
  • MySQL ????????? ?? ????????????
  • PostgreSQL ????????? ?? ????????????
  • ??????????? ?? ????????????
  • IDbConnection
  • IDbCommand, IDataParameter
  • IDataReader
  • IDbDataAdapter

131
OLE DB Data Provider
  • OleDbConnection ??????????? ?????? ? OLE DB
    ???????? ?? ?????
  • OleDbCommand ????????? SQL ??????? ????? OLE DB
    ?????? ??? ???? ?????
  • OleDbParameter ????????? ?? ???????
  • OleDbDataReader ?? ????????? ?? ????? ??
    ???????, ????????? ???? OLE DB
  • OleDbDataAdapter ?????? ????? ????? DataSet
    ?????? ? OLE DB ???? ?????

OleDbConnection dbConn new OleDbConnection(
_at_"ProviderMicrosoft.Jet.OLEDB.4.0Data
SourceC\MyDB.mdbPersist Security InfoFalse")
132
?????? ? OLE DB ??????
  • ????? ???? ????? C\Library.mdb, ????????? ? MS
    Access
  • ? ??? ??? ??????? Users
  • ?????????? "Microsoft Jet 4.0 Provider" ?? ??????
    ?? ADO.NET ???? OLE DB
  • ????????? Connection String ???? OleDbConnection
    ???????????? ?? Toolbox-a ?? VS.NET

ProviderMicrosoft.Jet.OLEDB.4.0Data Source
C\Library.mdbPersist Security InfoFalse
133
?????? ? OLE DB ??????
OleDbConnection dbConn new OleDbConnection(
_at_"ProviderMicrosoft.Jet.OLEDB.4.0Data Source"
_at_"C\Library.mdbPersist Security
InfoFalse") dbConn.Open() OleDbCommand cmd
new OleDbCommand( "INSERT INTO Users
(username, password) " "VALUES (_at_user,
_at_pass)", dbConn) cmd.Parameters.Add("_at_user",
OleDbType.VarChar).Value "new user
name" cmd.Parameters.Add("_at_pass",
OleDbType.VarChar).Value "secret
password" cmd.ExecuteNonQuery() cmd new
OleDbCommand("SELECT _at__at_IDENTITY", dbConn) int id
(int)cmd.ExecuteScalar() Console.WriteLine("Ins
erted user id 0", id)
134
???????????? 15
  • ?????? ? MS Access ???? OLE DB
  • ????????? ?? MS Access ???? ????? ? ??????? Users
  • ???????? ?? ??? ??????????
  • TODO ?? ?? ?????? ?????? ? ?? ?? ????? ????????
    screenshot

135
ADO.NET ? ?????????? ?????
  • ??????? ?? ??????? ? DataSet ????? ? ???????? ??
    ?????????????
  • ???????? ?? ?????? (SqlConnection)
  • ??????? ?? DataSet (???? SqlDataAdapter)
  • ????????? ?? ????????
  • ?????? ??? DataSet-a
  • ???????? ?? ??????
  • ???????? ?? ??????? ?? ??????? ?? ???????
  • ????????? ?? ????????

DataSet
SqlDataAdapter
SqlConnection
136
?????? ? ?????????? ?????
  • ??????? ????????, ? ????? ?? ???????? ???????? ?
    ?????????? ?????
  • ??????? ??????????? ??????? ?? ???????
  • DataSet
  • ????????? ???? ??????? ???????, ???????,
    constraints ? ????? ??????
  • DataTable ??????? ???????
  • XxxDataAdapter ??????????? ??????? ?? ???????
    ???? XxxCommand, XxxConnection ???????
  • DataRelation ?????? ????? ???????

137
DataSet ??????? ?????
  • ???????? ? DataSet
  • Tables ??????? ?????????
  • Relations ??????? ????????? ????? ?????????
  • ????????? ?? ??????????? ????????? (data binding)
  • ????? ?? DataSet
  • ?????? ??????????? ?? DataSet-?
  • ???????? ?? ??? ?????????
  • ??? ???? XSD ?????

138
?????-?????????? DataSets
  • ? .NET Framework ?? ????????? ?????-??????????
    DataSet-?
  • ?????-???????????? DataSet-? ?? ???????,
    ?????????? ?? DataSet
  • ????????? ???????? ?? ?????? ?? ?????????,
    ??????? ?????? ? ??????
  • ?????? ?? ??????????? DataSet
  • ?????? ?? ?????-????????? DataSet

string username (string) dsUsers.
Tables"Users".Rows0"username"
string username dsUsers.Users0.username
139
????????? ?? DataSet
  • ????????? ?? ?????-????????? DataSet
  • ???? XSD ????????? ?? VS.NET 2003
  • File Add New Item Data Set
  • ??? ????????? ?? XSD ?????, ?? ????????
    ??????????? C ????
  • ? ??????????? xsd.exe ?? XSD ?????
  • ???????????? MyDataSet.cs ??????? ??????? ?
    ???????? ?? ?????????, ???????? ? ???????? ??
    DataSet-?

xsd.exe MyDataSet.xsd /dataset/
140
???????????? 16
  • ????????? ?? ?????-????????? DataSet ???? VS.NET
  • TODO ?? ?? ??????? ?????????? ?? ??????????????

141
?????? DataTable
  • ???? ????????? ? ?????? ?? ?????
  • ???????? ???? ?? DataSet ?????
  • ???????? ????? ?? ??????? ? ???????
  • ??????? ?????? ? ????????
  • Rowsindex ?????? ?? ???????? ?? ?????
  • Columns ?????? ?? ???????? (DataColumn) ??
    ??? ??? ??????
  • NewRow() ??????? ??? ??? (DataRow), ?? ?? ??
    ?????? ? ?????????
  • Rows.Add(DataRow) ?????? ??? ? ?????????
  • Columns.Add(DataColumn) ?????? ??????
  • PrimaryKey ??????/??????? ????????? ????

142
??????? ?? ?????? ? DataTable
  • ??????? ?? ????? DataTable
  • RowChanging ????? ??????? ?? ???
  • RowChanged ???? ??????? ?? ???
  • RowDeleting ????? ????????? ?? ???
  • RowDeleted ???? ????????? ?? ???
  • ?????? DataRow ????????? ??? ?? ???????
  • this ???? ?????? ?? ?????????? ? ??????
    ?????? (?? ??? ??? ??????)
  • Delete ??????? ???? ???? ??????
  • ?????? DataColumn ????????? ??????
  • Name ??? ?? ????????
  • DataType ??? ?? ???????? (int, string, )

143
?????? ? DataTable ??????
DataTable tbl new DataTable("Authors") tbl.Col
umns.Add("au_id", typeof(int)) tbl.Columns.Add("a
u_fname", typeof(string)) tbl.Columns.Add("au_lna
me", typeof(string)) tbl.Columns.Add("au_phone",t
ypeof(string)) // The row is detached (not
added to the table) DataRow row
tbl.NewRow() row0 1 row1
"Branimir" row2 "Giurov" row"phone"
"359 2 XXX XXXX" tbl.Rows.Add(row)
144
???????????? 17
  • ?????? ? DataTable ?????
  • TODO ?? ?? ?????? ???? ????? DataTable ? ?? ??
    ????? ???????? screenshot

145
?????????? ?? ??????????? (constraints)
  • ?????????? ?? ???????? ???? (Primary key)

// Single column PK dtCustomers.PrimaryKey new
DataColumn() dtCustomers.Columns("CustomerID
") // Multiple columns PK dtEmployees.PrimaryKe
y new DataColumn() dtEmployees.Columns("La
stName"), dtEmployees.Columns("FirstName")
146
?????????? ?? ??????????? (constraints)
  • ?????????? ?? UniqueConstraint ?
    ForeignKeyConstraint

ds.Tables"Product".Constraints.Add( new
UniqueConstraint("UC_ProductName",
ds.Tables"Product".Columns"ProductName")) For
eignKeyConstraint custOrderFK new
ForeignKeyConstraint("CustOrderFK",
ds.Tables"CustTable".Columns"CustomerID",
ds.Tables"OrdersTable".Columns"CustomerID")
custOrderFK.DeleteRule Rule.None // Cannot
delete a customer value // that has associated
existing orders. ds.Tables"OrdersTable".Constrai
nts.Add(custOrderFK)
147
????????????? ??????
  • ???????? ?? ???????, ?????????? ?? ???????????
  • ????????? ?? ? Expression ?????????? ??
    DataColumn ?????
  • Sum(Unit Price Quantity)
  • ??????????? ??????? ????? ?? ?????????
    ???????/????????? ?????????
  • Avg, Count, Sum, Max, Min

148
????????????? ??????
  • ????????? ?? ????????? ??
  • ??????????? ??????
  • ?????????? ??????
  • ???????????? ?? ???? ??? ?????? ??????
  • ????????? ??? ??????? ??????? ??? ?????????
  • ??????

// Calculated field VAT DataColumn priceVat
new DataColumn( "Price(VAT)",
typeof(decimal)) priceVat.Expression "Price
1.2" productsTable.Columns.Add(priceVat)
149
DataRelation ??????
  • ????????? ??????? ????? ??????? / ?????????
    ?????? ? ??????? ? ???????????? ???
  • ?? ???????? ??????????? (constraints)
  • ????? ?? ?? ????????? ? ??? ?????? ???????
  • ????? ?? ????????? ?? ????????? ????
    ?????????????? ?????????
  • ????????? ?? ?? ???????? ? ????????????? ??????
    ?? ?????????? ?? ????????? ??????
  • ???????? ?? ? Relations ?????????? ?? DataSet
    ??????

150
DataRelation ??????
  • GetChildRows() ????? ???????? ?????????? ??
    ????? ???

dsNorthwind.Relations.Add("FK_CustomersOrders",
dtCustomers.Columns"CustomerID",
dtOrders.Columns"CustomerID", true) //
Process all customers and their orders foreach
(DataRow drCustomer in dsNorthwind.Tables"Cu
stomers".Rows) foreach (DataRow drOrder in
drCustomer. GetChildRows("FK_CustomerOrder
s")) // Do some work with the rows

151
DataView ????
  • ???????? ?? ????????? (View ????????) ? ?????? ??
    ?????
  • ????????? ?????? ?? ??????? ??????? ?? ????? ??
    ??????????
  • ?????????? ?? ???????? ?? ???????
  • ????????? ?? ?????? ??? ??????

DataTable usersTable ... DataView usersView
new DataView(usersTable) // Show only modified
versions of current rows and new
rows usersView.RowStateFilter
DataViewRowState.ModifiedCurrent
DataViewRowState.Added
152
????????? ? ????????? ?? ??????? ?? DataSet
  • ??? ??????? ??????
  • ReadXml() ??????? DataSet ?? XML
  • WriteXml() ??????? DataSet ? XML
  • ????? ?? ????? ?? ?????? ???? ?????????
  • ReadXml() ?????? ?????????? ??? ?????? ??
    ?????????? ??? ???????????? ???? ?????
  • WriteXml() ?????????? ???????????? ???????

153
DataSet.ReadXml()
  • ?????? ???????? ?? XML ???????
  • Stream, TextReader ??????? ?? ?????? ?????
  • String ??? ?? ???? ??? URL
  • XmlReader XML ?????
  • ???? ?? ?? ?????? ????? ?? ?????? (XmlReadMode)
  • Auto, DiffGram, Fragment, IgnoreSchema,
    InferSchema, ReadSchema
  • ???????? ????? ?? ??????? ???? ?? ?? ???????, ??
    ?? ??????? ?????? ??? ?? ?? ???????? ?? ??????
    ?????

154
DataSet.WriteXml()
  • ?????????? ?? ????????? ?? ??????? ? ??????? ??
    DataSet ? XML ??????
  • ????????????? ??? XmlDataDocument ?????
  • ???? ?? ?? ?????? ????? ?? ?????????
    (XmlWriteMode)
  • DiffGram ??????? ???????????? ????? ?
    ?????????? ? ??? ???????
  • IgnoreSchema ?? ??????? ???????
  • WriteSchema ??????? ? ???????

155
ReadXml ? WriteXml ??????
TODO ?? ?? ????? ???????? ????-??? ?? ?????????
? ????????? ?? DataSet ? XML ????
156
???????????? 18
  • ?????? ? ?????? ?? DataSet ?? XML ????
  • TODO ?? ?? ?????? ?????? ? ?? ?? ????? screenshot

157
?????? XmlDataDocument
  • ?????????? ? ????????? ?? XML ????
    XmlDataDocument ?????
  • ?????? XmlDataDocument
  • ???????????? DOM ?????
  • ????????? ?? XmlDocument
  • ????????? ??????????? ????????????? ?? DataSet ?
    DOM ?????
  • ??? ??????? ? DOM ??????? ?? ??????? DataSet-?
  • ??? ??????? ?? DataSet-? ?? ??????? DOM ???????

158
XmlDataDocument ??????
  • TODO ?? ?? ????? ???????? ???????? ????-???

159
?????????? ?? DataAdapter
  • TODO ?? ?? ?????? ?????? ?? DataAdapter
  • ?? ? ???
  • ?? ????? ?? ???????
  • ??? ?? ???????

160
?????????? ?? DataAdapter
  • TODO
  • ????? ?? ????????? ? ??? ?? ?????
  • InsertCommand, DeleteCommand,

161
DataAdapter ??????
  • TODO ?????? ?? DataAdapter ? ???????

162
DataSet.GetChanges() ? DataSet.HasChanges()
  • ????? ?? ??????? ????????? ?? ???????? ?? ???????
    ?? ??? DataRowState
  • Added ???????? ??????
  • Deleted ??????? ??????
  • Detached ????????? ?? ????????? ??????
  • Modified ????????? ??????
  • Unchanged ??????????? ??????
  • GetChanges() ????? ????? ?? DataSet-?, ?????????
    ????????? ???? ?????????? ????????? ??
    AcceptChanges() ??????

163
DataSet.GetChanges() ??????
if(! myDataSet.HasChanges(DataRowState.Modified))
return // Create temporary DataSet
variable DataSet modifiedDataSet // GetChanges
for modified rows only modifiedDataSet
myDataSet.GetChanges( DataRowState.Modified)
// Check the DataSet for errors if(modifiedDataSet
.HasErrors) // Insert code to resolve
errors // After fixing errors, update the data
source // with the DataAdapter used to create
the DataSet adp.Update(modifiedDataSet)
164
????????? ????? ??????? ???????? ?? ??????
  • ????????? ??????? ? DataSet ????
    DataAdapter.Fill() ??? ?? ???? ?????
  • ??????????
Write a Comment
User Comments (0)
About PowerShow.com