Thành phần DataSet Không kết nối với SQLServer Độc lập nguồn dữ liệu => sử dụng chung cho tất cả các loại Connection, nguồn dữ liệu XML... Typed DataSet Có các thông tin về lược đồ q
Trang 2+ SqlCommand: Để thực hiện một câu lệnh SQL
% Codes do VB tạo ra nằm trong:
InitializeComponent()
Trang 33
Trang 4Mã do VB.Net tự động phát sinh trong Windows
Form
Private Sub InitializeComponent()
……….
Me.SqlDataAdapterKhachHang = New System.Data.SqlClient.SqlDataAdapter
Me.DataSet11 = New PhieuNhap.DataSet1
Me.SqlDataAdapterLoaiHang = New System.Data.SqlClient.SqlDataAdapter
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
Me.SqlDataAdapterHangHoa = New System.Data.SqlClient.SqlDataAdapter
Me.SqlDataAdapterPhieuNhap = New System.Data.SqlClient.SqlDataAdapter
Me.SqlDataAdapterChiTietPhieuNhap = New System.Data.SqlClient.SqlDataAdapter Me.SqlDataAdapterThieuChi = New System.Data.SqlClient.SqlDataAdapter
Me.DataViewHangHoa = New System.Data.DataView
……….
End Sud
Trang 5+ Click Application (project đang tạo)
+ Click Right SqlConnection1
+ Click Properties
- Name: tên connection
- ConnectionString: ChuổI Kết nốI vào SQL Server
Trang 6ConnectionString
Click ComboBox của ConnectionString
Trang 7+ Select or enter a
server name: Chọn
Computer Name
hoặc Server Name
+ Select the database
Trang 8Lời khuyên
Lưu chuỗi kết nối trong Registry hoặc file XML
Configuration của project
Truy xuất chuỗi kết nối trong Registry :
RegistryKey key = Registry.LocalMachine.OpenSubKey(“Software\\MyProgram”)
SqlConnection1.ConnectString = key.GetValue(“MyConnectString”).toString();
Truy xuất chuỗi kết nối trong file XML Configuration:
Trang 9Viết mã sự kiện cho thành phần Connection
Sự kiện StateChange được khởi phát mỗi khi trạng thái
(đóng, mở, …) của Connection thay đổi
Sự kiện InfoMessage được khởi phát mỗi khi có thông
điệp chuyển đến từ Database Server
Trang 11 Xây dựng CommangText bằng QueryBuilder
Trang 1212
Trang 13 Sử dụng tham số (Parameters) trong Command.
Trang 14+ Click Application (project đang tạo)
DataAdapter chuyển giao dữ liệu từ nguồn sang Dataset
và ngược lại
Trang 15 Configure Data Adapter …
Trang 1616New Connection: Chọn kết nốI tớI dữ liệu SQL Server (giống SqlConnection)
Trang 1717
Trang 18+ Created new stored procedures: tạo mớI stored
procedures
+ Created existing stored procedures: Lấy các stored
procedures đã được tạo
+ Use SQL Statements : Tạo theo điều kiện SQL (Tự tạo)
Trang 19 Query Bulder : Xây dựng câu Query
Trang 20Tạo Insert, Update, Delete………
Trang 2121
Trang 22 Mã lệnh phát sinh sau khi configure DataAdapter :
Xem trong hàm:
Private Sub InitializeComponent()
‘Codes phát sinh
End Sub
Trang 23 Preview DataAdapter : để xem dữ liệu (fill)
+ Click-Right SqlDataAdapter1
+ Click Preview Data
+ Click Fill DataSet
Trang 24 Fill Dataset :
Trang 25 Generate Dataset : Từ SqlDataAdapter
+ Click-Right SqlDataAdapter1
+ Click Generate Dataset
•New: tạo DataSet mới
• Existing: từ cái đã có
Trang 26 Generate Dataset :
Trang 27 Tables Mapping : Trong SqlDataAdapter Dùng để thay đổI theo ý mình.( Dataset table, Dataset Columms) Nên dùng Tables Mapping ngay
sau khi vừa
tạo xong
SqlDataAdapter
Trang 28Thành phần DataSet (Không kết nối với SQLServer)
Độc lập nguồn dữ liệu => sử dụng chung cho tất cả các
loại Connection, nguồn dữ liệu XML
Trang 29 Typed Dataset: Tạo một đối tượng từ lớp con Dataset do người sử dụng định nghĩa, kế thừa từ lớp Dataset của Net
FrameWork Gọi là Dataset được định kiểu
Untyped Dataset: Tạo một đối tượng Dataset trống, không
có lược đồ (schema) dữ liệu Gọi là Dataset chưa được định kiểu
Typed DataSet
Có các thông tin về lược đồ (quan trọng nhất là kiểu dữ liệu của các cột trong bảng) được khai báo như là thành viên lớp tương thích với nguồn dữ liệu Giúp tránh các lỗi khi
Dataset được update vào nguồn dữ liệu
Truy cập dữ liệu một cách tự nhiên:
myDataset.myTable.myColumn
Trang 30 Tạo Typed Dataset: có 2 cách
1 Generate Dataset từ DataAdapter
2 Add Dataset từ menu Project
Add Dataset từ menu Project
1 Chọn menu Project Add New Item Dataset Open Hay ToolBox Data DataSet
2 Tạo lược đồ cho Dataset từ Database hoặc XML
Trang 31Xem Dataset : Chọn dataset cần xem double click
Ví dụ: Double click Dataset1.xsd
Trang 32Sơ đồ Schema của Dataset.xsd
Trang 33Tạo khoá ngoại HANGHOA tham chiếu LOAIHANG
Trang 34+ Click Application(Project mà đang tạo)
•Table: của DataView dùng để kết với bản trong Dataset
• RowFilter: Là giống như câu Where trong câu lệnh Selecte SQL Server
Trang 35Thành phần DataView
Trang 36 Hiển thị tập con các mẩu tin trong một DataTable :
1 Lọc các mẩu tin bằng một biểu thức lọc
2 Lọc các mẩu tin theo trạng thái hàng
RowFilter: Lọc
Trang 38Thành phần DataGird: DataSource, DataMember,
DataBind, Auto Format
Kết gán với DataTable hoặc DataView thông qua tính chất DataSource và DataMember
Phương pháp DataBind được sử dụng để cập nhật những thay đổi của nguồn dữ liệu
Có thể sử dụng wizard Auto Format để chọn các tập mẫu của DataGird
Trang 39Huỳnh Văn Thâm
Sử Dụng DataReader
Trang 40DataReader
Hỗ trợ truy cập dữ liệu nhanh, one-way, read-only
Chỉ đọc dữ liệu từ server từng dòng riêng rẽ nên không
tốn bộ nhớ
Chỉ được tạo thông qua phương pháp ExecuteReader của
đối tượng Command
Connection phải được mở trước khi gọi ExecuteReader
Phương pháp Close của DataReader phải luôn được gọi
khi DataReader không còn cần sử dụng để giải phóng
Connection
Trang 43SingleResultSingleRow Vd:
command.ExecuteReader(CommandBehavior.CloseConnecti
on | CommandBehavior.SingleRow)
Trang 44Truy cập DataReader với nhiều tập mẩu tin kết quả
String sql = “select * from HangHoa; select * from KhachHang”
SqlCommand command = new SqlCommand(sql,conn)
Trang 45Chương 6:
Sử Dụng DataAdapter
Trang 46 DataAdapter quản lý 4 command ở dạng tính chất lớp :
SelectCommand, InsertCommand, UpdateCommand,
DeleteCommand
Trang 49Phương thức FillSchema
Schema : Lược đồ của tập dữ liệu, bao gồm cấu trúc và
quan hệ của các bảng dữ liệu
Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand Me.SqlSelectCommand1.CommandText = "SELECT HH_MaHang,
HH_TenHang, HH_SoLuong, HH_GiaNhap, HH_MaLoai FROM
Trang 50 Khi có thao tác thay đổi dữ liệu trong một bảng của
DataSet, các dòng bị thay đổi sẽ được ghi nhận qua tính chất RowState
RowState nhận các giá trị :
DataRowState.Added Cho biết dòng mới được thêm vào
DataRowState.Deleted Cho biết dòng đã bị xóa
DataRowState.Detached Cho biết dòng không thuộc về tập dữ liệu gốc của DataSet
DataRowState.Modified Cho biết dòng đã bị thay đổi
DataRowState.Unchanged Dòng không bị thay đổi
Trang 51Phương thức Update
Cập nhật dữ liệu từ DataSet vào cơ sở dữ liệu gốc
Nội dung hoạt động của Update: duyệt qua từng khoản tin trong DataSet, phân tích giá trị RowState và gọi 1 trong 4
command tương ứng của DataAdapter : Select, Insert, Update
và Delete
Command Select được định nghĩa ngay từ đầu khi tạo
DataAdapter, sử dụng để truy vấn dữ liệu và điền vào DataSet (có thể được định nghĩa tường minh, hoặc thông qua hàm dựng của DataAdapter)
Các command Insert, Update, Delete sử dụng cho phương
thức Update, có thể được người sử dụng định nghĩa hoặc được
phát sinh tự động bằng cách sử dụng CommandBuilder :
Dim SqlCommandBuilder as new SqlCommandBuilder(DataAdapter)
Trang 52 Hạn chế khi sử dụng CommandBuilder :
Chỉ sử dụng cho DataAdapter kết nối đến 1 bảng dữ liệu.
Bảng dữ liệu phải được chỉ định khóa chính.
Định nghĩa các command Insert, Update, Delete cho
DataAdapter: tạo các command với CommandText có chuỗi SQL tương ứng, sử dụng các tham số cho các cột dữ liệu