1. Trang chủ
  2. » Công Nghệ Thông Tin

Các đối tượng cơ bản của ADO.Net

26 706 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 2,66 MB

Nội dung

I.Các đối tượng bản của ADO.Net Không cần quá dài dòng .Đối tượng này thực chất là các thư viện (lib) dưới dạng tích hợp sẵn hoặc là các file dll của Visual Studio. Nó được thiết kế để tăng tốc độ truy cập và thao tác trên dữ liệu trong môi trường đa lớp. thể tác động đến các kiểu sở dữ liệu như SQL , Access,Oracle . v v. Vấn đề nó tăng tốc thế nào thì ta . kóc quan tâm . Chủ yếu , ta sẽ đi học cách sử dụng các đối tượng con trong nó để thao tác với sở dữ liệu mà thôi. Thế nào là sở dữ liệu ? thế nào là đối tượng ? Dot net là gì ? Visual Basic.Net ? . v v là những câu hỏi không được trả lời trong mục này .Vì khi đụng đến phần này , yêu cầu các bạn newbie đã phải nắm được các khái niệm trên.Có thể tham khảo sơ lược về Dot net và về khái niệm lập trình hướng đối tượng tại đây: http://hvktqs.com/forum/showthread.php?tid=46 .Còn về sở dữ liệu và đặc biệt là SQL thì hẹn gặp lại ở chuyên mục khác . Những thành phần sẽ nghiên cứu trong bài viết này: +Đối tượng SqlConnection +Đối tượng SqlDataAdapter +Đối tượng bảng dữ liệu và bảng view dữ liệu +Mô hình hiển thị tổng quát 1.Kết nối từ Visual Basic.Net vào Sở Dữ Liệu của SQL: Trước tiên hết , trước khi muốn làm điều gì đó với sở dữ liệu của bạn , điều quan trọng là phải kết nối được vào sở dữ liệu đó. SqlServer sau khi cài đặt ,nó tạo cho người sử dụng một server (máy chủ) , thông thường là tại chính máy của người sử dụng .Tại server này , người sử dụng thể tạo ra các kho thông tin dữ liệu (database) của mình để mà quản lý. Vì sao cứ phải tạo ứng dụng tác động đến csdl làm gì ? Người sử dụng phần mềm hok bít cách vào Sqlserver và gõ các câu lệnh để tác động đến csdl như chúng ta . Họ chỉ biết kích chuột , nhìn , kích chuột tiếp , nhận được kết quả . hết !Vì vậy ta phải tạo một ứng dụng để họ thể sử dụng một cách trực quan nhất . Ta bắt đầu đi vào đối tượng đầu tiên : Đối tượng SqlConnection Đối tượng SqlConnection chứa trong nó 2 cái rất quan trọng là thuộc tính: +ConnectionString là thuộc tính trả về giá trị là một chuỗi kí tự .Chuỗi này nhiệm vụ dẫn đường đến sở dữ liệu mà ta muốn tác động đến.Chuỗi đường dẫn này dạng như sau : "server=Tên_server;database=Tên_Database;Kiểu_Kết_Nối" . Trong đó Kiểu kết nối thể là : -- integrated security =SSPI => kết nối ủy quyền windows -- acc=tên_user;pwd=chuỗi_password => kết nối account Ví dụ tớ truy cập vào server nhà tớ , tên là KHANH\KHANH , cần truy cập vào sở dữ liệu quanlynhansu và kiểu kết nối là uỷ quyền windows thì tớ sẽ viết như sau : "server=KHANH\KHANH;database= quanlynhansu;integrated security =SSPI" Đương nhiên khi khai báo thì phải mô tả rõ đối tượng.Đầu tiên ta khai báo một biến mang tên bienketnoi thuộc về đối tượng ConnectionString để thể sử dụng thuộc tính kết nối của nó : Dim bienketnoi as new ConnectionString() Rồi mới sử dụng thuộc tính: bienketnoi.ConnectionString="server=KHANH\KHANH;database= quanlynhansu;integrated security =SSPI" +Phương thức Open(): OK rồi , sau khi đã đường dẫn kết nối đến sở dữ liệu , ta gọi phương thức Open() của đối tượng kết nối để mở đường kết nối theo đường đã khai báo : bienketnoi.Open() Nhưng để chắc chắn sự kết nối thành công , ta để một bẫy lỗi Try Catch như sau : Mã PHP: Dim bienketnoi as new ConnectionString() Try bienketnoi.ConnectionString = "server=KHANH\KHANH;database=d etai;integrated security=SSPI" bienketnoi.Open() MsgBox("connected!") Catch ex As Exception MsgBox(ex.ToString) End Try 2.Đối tượng SqlDataAdapter: Đối tượng này thể hiểu là bộ chuyển đổi dữ liệu từ đinh dạng của SQL sang dạng dữ liệu của Visual Studio , để thể hiển thị dữ liệu trên Visual Studio.Để thể lấy dữ liệu từ SQL , nó cần một đường dẫn dẫn đến sở dữ liệu cần chuyển đổi (đương nhiên , kô biết chuyển ở đâu thì làm sao chuyển ? ) và một dạng lệnh SQL để thể chuyển đổi dữ liệu theo yêu cầu nhất định: Dim da as new SqlDataAdapter(“chuỗilệnh”,biến_KN.ConnectionString) Ví dụ , cần lấy tất cả dữ liệu từ bảng tblA để chuyển sang dữ liệu của VS với điều kiện bảng A nằm ở server KHANH\KHANH , trong sở dữ liệu quanlynhansu , ta khai báo bộ chuyển đổi như sau : Dim da as new SqlDataAdapter(“select * from tblA”,bienketnoi.ConnectionString) với biến kết nối bienketnoi lấy từ ví dụ trước. Sau khi đã được khối dữ liệu lưu trữ trong da .Muốn đem ra để hiển thị , ta cần đổ dữ liệu ra một cái kho chuyên lưu trữ dữ liệu dạng bảng của VS đã cho sẵn mang tên DataTable.Trước khi sử dụng DataTable , ta hãy khai báo nó Dim tb as new DataTable Để đổ dữ liệu vào tb , ta dùng phương thức Fill của da: da.Fill(tb) Và cuối cùng .Trước khi hiển thị , ta hãy tìm hiểu đối tượng DataGrid của VisualStudio. Chọn đối tượng này từ bảng Toolboxs , kéo thả vào trong Form ( nếu chưa thì ta phải add từ Choose ToolBox Items).Đối tượng này thuộc tính DataSource , chuyên dùng để nhận lấy dữ liệu từ DataTable hoặc DataSet( cái này sẽ bàn đến ở phần sau).Ngoài ra còn đối tượng DataGridView , cho phép hiển thị bảng dữ liệu và add các mini tools box bên trong nó .Cuối cùng là đối tượng ListView , cho phép hiển thị dữ liệu dưới dạng list li ệt kê. Sau khi thả đối tượng DataGrid vào , đặt tên là DataGrid1 , ta viết tiếp : DataGrid1.DataSource = tb; Đương nhiên sau khi dữ liệu trong DataSource , nội dung sẽ output ra ngoài của DataGrid1. Sau đây là một ví dụ: Mã PHP: Dim da As New SqlDataAdapter("select * from dssv", Form1.bienketnoi) Dim tb As New DataTable da.Fill(tb) DataGrid1.DataSource = tb Kết quả hiển thị khi thực thi: Như vậy ,ta một mô hình hiển thị tổng quát là : Ở phần tới , ta sẽ bàn đến đối tượng SqlCommand , với cách thực thi sâu sắc hơn cho đối tượng SqlDataAdapter . 3.SqlCommand +Vì sao phải dùng SqlCommand? Ta thể truyền câu lệnh thông qua SqlDataAdapter mà ? Hờ hờ , đúng là thế . Nhưng nếu câu lệnh cần tùy biến thì seo , tức là câu lệnh cần truyền là dạng tham số đầu vào . ta sẽ phải làm thế nào giờ . Do đó cần phải đối t ượng riêng để xử lý cho tình huống đại loại như thế ! SqlCommand là đối tượng như thế nào ? Hình ảnh phát nhỉ Ở đây , nó 3 thuộc tính bản là : Connection : dùng để chỉ rõ lệnh này sẽ tác động đến sở dữ liệu nào , ở đâu CommandText : trả về chuỗi câu lệnh mà ta cần viết CommandType : trả về dạng câu lệnh mà ta viết ở CommandText, nếu dạng câu lệnh ở CommandText là dạng lệnh thông thường thì sẽ trả về CommandType.Text, nếu dạng lênh ở CommandText là dạng thủ tục thì sẽ trả về CommandType.StoredProcedure Ví dụ : muốn định nghĩa một lệnh đọc toàn bộ các dòng từ một bảng, vẫn dùng biến kết nối như ở phần 2. Ta thể viết: Mã PHP: Dim sc As New SqlCommand() sc.Connection = bienketnoi sc.CommandText = "select * from tblA" sc.CommandType = CommandType.Text Dịch nghĩa : ta một đối tượng sc là một đối tượng lệnh , sẽ thực thi lệnh được dẫn đường bởi bienketnoi, nội dung câu lệnh là select * from tblA và dạng của câu lệnh này là dạng Text Tiếp theo , ta lại viết một store procedure hienthitblA với nội dung là select * from tblA. và lúc g ọi thủ tục này bằng SqlCommand thì thể viết là : Mã PHP: Dim sc As New SqlCommand() sc.Connection = bienketnoi sc.CommandText = "hienthitblA" sc.CommandType = CommandType.StoredProcedure Dịch nghĩa : ta một đối tượng sc là một đối tượng lệnh , sẽ thực thi lệnh được dẫn đường bởi bienketnoi, nội dung câu lệnh là hienthitblA và dạng của câu lệnh này là dạng StoredProcedure Ok rồi, một cách ngắn gọn hơn , phương thức khởi tạo của SqlCommand sẽ cho phép ta viết gọn gàng hơn: Dim sc as new SqlCommand("Chuỗi_câu_lệnh",Biến_kết_nối) sc.CommandType=CommandType.kiểu_câu_lệnh Theo đó, với 1 trong 2 ví dụ trên , ta thể viết: Mã PHP: Dim sc as new SqlCommand("hienthitblA",bienketnoi) sc.CommandType = CommandType.StoredProcedure Nếu lệnh thực thi với mục đích hiển thị: Ta sẽ sử dụng SqlCommand để truyền vào cho SqlDataAdapter, lí do truyền tương thích vì bản thân SqlCommand đã bao hàm bienketnoi và câu lệnh rồi, nên hoàn toàn truyền cho SqlDataAdapter được . Mã PHP: Dim sc as new SqlCommand("hienthitblA",bienketnoi) sc.CommandType = CommandType.StoredProcedure Dim da As New SqlDataAdapter(sc) Dim tb As New DataTable da.Fill(tb) DataGrid1.DataSource = tb Khi thủ tục tham số: Lúc này ta dùng đến lớp đối tượng con Parameters (tham số) của SqlCommand , nó chứa phương thức AddWithValues để đưa nội dung vào cho tham số của thủ tục. Ví dụ ta 1 store procedure thế này: Mã PHP: create procedure insert_tblA @bien1 as nvarchar(50), @bien2 as integer as insert into tblA (cot1,cot2) values (@bien1,@bien2) Và giả sử tiếp 2 tham số lấy từ 2 textbox.Vậy thì ta sẽ sử dụng đối tượng sc như sau Mã PHP: Dim sc as new SqlCommand("insert_tblA",bienketnoi) sc.CommandType = CommandType.StoredProcedure sc.Parameters.AddWithValue("@bien1", textbox1.text) sc.Parameters.AddWithValue("@bien2", Integer.Parse(textbox2.text)) sc.ExecuteNonQuery() Lí do phải đổi textbox2.text sang dạng integer vì kiểu của bien2 là kiểu integer.Còn phương thức ExcuteNonQuery() để thực hiện câu lệnh sc mà không cần đưa ra hiển thị nào . Lí do vì đây là thủ tục insert_tblA được thực hiện, chỉ với mục đích chèn vào bảng tblA, nên không cần dùng đến da để đưa hiển thị ra ngoài. Như vậy , tổng quát của AddWithValue là: sc.Parameters.AddWithValue("@tên_biến", giá trị tương ứng) Ở lần này , ta sẽ bàn đến những chiêu thức bản của lập trình CSDL: +Update (Cập nhật) +Insert (Thêm) +Delete (Xóa) +Search (Tìm kiếm) +Enumeration (Thống kê) Và bàn đến kĩ thuật điều khiển DataGridView thông qua bắt sự kiện: +Nhấp chuột vào DataGridView để lấy thông tin +Chỉnh sửa trực tiếp dữ liệu trên DataGridView và tự động cập nhật lại csdl I.Update,Insert,Delete,Search,Enumerati on 1.Ôn tập đôi chút về Command SQL Ta lần lượt trải nhanh qua vài bước như sau: Một số ghi chú: SEM = SQL Sever EnterpriseManager SQA = SQL Query Analyzer Bước 1: Câu lệnh create Create table tên_bảng (tên_cột_1 kiểu_cột_1,…,tên_cột_n kiểu_cột_n) Câu lệnh cho phép tạo một bảng nằm trong một CSDL tương ứng.Sau đó các bạn quay lại SEM để xem và nhập các dữ liệu vào các cột. chọn vào CSDL mà bạn vưà tạo (1) rồi chọn đến ô chứa các bảng (2) rồi kích tiếp chuột phải vào bảng vừa tạo (3) rồi chọn đến Return all rows (4) Tại đây bạn nhập các dữ liệu như làm với Microsoft Excel vậy ! Câu lệnh select: Quay tr ở lại SQA để thực hiện tiếp một số câu lệnh sau… 1. Select * from tên_bảng : Hiển thị tất cả các cột trong bảng 2. Select tên_cột_1,…,tên_cột_n from tên_bảng: Hiển thị một số cột nào đó trong bảng 3.select tên_cột_1,…,tên_cột_n from tên_bảng where điều_kiện_logic :Hiển thị các cột phụ thuộc theo điều kiện logic đã chọn trước. Điều kiện logic nếu là chữ thì bạn phải thêm dấu ’’ vào hai đầu của chữ cần so sánh trong điều kiện logic Bước 2:Các câu lệnh quan trọng trong SQL Câu lệnh insert Mã PHP: insert into tên_bảng hoặc insert into tên_bảng (cột_1,…,cột_n) (cột_1,…,c ột_n) values valu es (@biến_1,…,@biến_n) (giá_trị_1,…,giá_tr ị_n) Câu lệnh cho phép điền thêm giá trị vào bảng, giá trị thể là biến ( kí hiệu đối với SQL là @tên_biến ) hoặc thể là giá trị cụ thể, nhưng cần chú ý là các giá trị được điền vào phải phù hợp với kiểu dữ liệu của cột. Ví dụ như cột stt kiểu integer thì ta không thể điền chữ ‘a’ vào đó được… [...]... nh t th cho các thao tác tác ng n s d li u, ta c n i vào b n ch t c a các câu l nh tương tác n s d li u Các câu l nh csdl chia ra làm 2 ph n: truy v n và không truy v n + Truy v n : các câu l nh tương tác n s d li u và l y d li u, ưa ra dư i d ng hi n th b ng Ví d như câu l nh g i b ng, tìm ki m, th ng kê u b t u v i câu select + Không truy v n : các câu l nh tương tác n s d li u ,... ơn gi n làm cho vi c l p trình s d li u ư c nhanh chóng và công nghi p, kèm theo tính chuyên nghi p c a l p trình Mô hình 3 l p ra i ph c v cho m c ích này! Trư c khi bư c vào ph n này, các b n hãy c kĩ l i các ph n trang trư c n m b t c th các i tư ng b n c a ADO.NET Ok, r i, gi ta b t u v i mô hình 3 l p: Rõ ràng r ng , n u ta mô t ư c t ng data, ta th i mô t các t ng còn l i r t nhanh có...V i ki u dùng th 1 ta c n ph i truy n các giá tr vào thông qua các bi n ây t c tình khai báo tên các bi n khác h n v i tên các c t th t b t kì , không c ph i trùng v i tên c t… các b n th y tên bi n Câu l nh delete Delete from tên_b ng Where i u_ki n_logic Câu l nh cho phép xoá m t dòng ho c m t s dòng nào... thêm s a xóa khá ơn gi n, ch là t o m t s th t c , v i các bi n truy n vào là bi n mu n tác ng,thay i thêm b t mà thôi, r i sau ó g i các i tư ng b n c a ADO.NET ra khai thác th t c Vi c thêm vào khá ơn gi n, như ph n gi i thi u v i tư ng SqlCommand ã ưa ra ví d Còn vi c s a và xóa, t xin ư c gi i thi u m t kĩ thu t i u khi n datagridview m t cách t biên t di n a i u khi n DataGridView M c tiêu... n s d li u , nhưng không l y d li u v Ví d như các l nh thêm s a xóa M t cách dân dã, ta nói : hai ki u câu l nh , hi n th và kô hi n th , và v i m i d ng này, ta l i nhi u cách th hi n nó: b ng th t c hay câu l nh tr c ti p Th hi n nó m t cách rõ nét qua m i trư ng h p như sau : Ok r i, ta b t u i mô t t ng data v i hình nh mô t trên Các bư c : + T o m t project m i, t tên nó là vidu3lop... ây, ta s l y 1 b ng trong bài toán T i ây, ta mô t c th cho s d li u c a ta qu n lí c a hàng gas L y b ng bình bán làm ví d B ng này 3 c t: Mã bình , ngày bán và ơn giá V i 4 ch c năng b n c a nó là hi n th ,thêm ,s a ,xóa s d ng t ng datalayer ã mô t h t các công vi c giao ti p v i server, ta c n m t i tư ng thu c v t ng này s d ng các giao ti p ó: Mã PHP: Dim odata As New Data() +Ti p theo,... Date.Parse(TextBox2.Text), Integer.Pa rse(TextBox3.Text)) DataGridView1.DataSource = obusi.hienthi() End Sub End Class Các bi n truy n vào cho bi n thêm l y t các textbox , như hình minh h a sau: M t khi ã t ng data chu n, ta th em làm công nghi p và r t nhanh nh ng cái b n cho 1 bài t p qu n lý v i csdl.Chúc các b n làm c mô hình chu n như ý ! H n g p l i n i dung khác! ... data.vb + i tên Class1.vb trong businesslayer thành clsvidu3lop N u th c hi n úng các bư c như trên, thì b ng Solution Explorer s gi ng th này Gi ta s vi t trong file data.vb như sau : +M t bi n k t n i n s d li u +3 phương th c truy v n (d ng th t c và text) và 1 phương th c kô truy v n ( d ng g i th t c tham s ) Khai báo các thư vi n Mã PHP: Imports System.Data.SqlClient Imports System.Data B t u... n truy n vào ho c không bi n truy n vào Ví d xây d ng m t th t c không tham s truy n : Ví d khác v th t c tham s truy n: th t c này , các giá tr 5,’ggg’,’ggg’,20 l n lư t ư c truy n vào cho @stt,@hodem,@ten,@soID khi g i exec tên_th _t c Như v y cách th c hi n g i th t c là : Exec tên_th _t c giá_tr _1,…,giá_tr _n V i giá_tr _1,…,giá_tr _n s ư c l n lư t truy n cho @bi n_1,…,@bi n_n 2.T p... giá tr c n s a ã ư c hi n th ra sau khi nh n nút c p nh t thì s d li u trong Sql cũng ư c c p nh t l i thông tin làm như th , trư c h t ta c n ph i b t ư c dòng v a click vào datagridview b ng m t bi n donghientai ki u integer : donghientai = DataGridView1.CurrentRow.Index r i trích ch n giá tr c a Datagridview t i m t ô i nào ó b ng cách : dim s as string = DataGridView1.Rows(donghientai).Cells(i).Value.ToString() . I .Các đối tượng cơ bản của ADO. Net Không cần quá dài dòng .Đối tượng này thực chất là các thư viện (lib) dưới dạng tích hợp sẵn hoặc là các file dll của. Trước khi bước vào phần này, các bạn hãy đọc kĩ lại các phần ở trang trước để nắm bắt cụ thể các đối tượng cơ bản của ADO. NET Ok, rồi, giờ ta bắt đầu với

Ngày đăng: 23/10/2013, 20:15

HÌNH ẢNH LIÊN QUAN

Như vậy ,ta có một mô hình hiển thị tổng quát là: - Các đối tượng cơ bản của ADO.Net
h ư vậy ,ta có một mô hình hiển thị tổng quát là: (Trang 4)
Hình ảnh phát nhỉ - Các đối tượng cơ bản của ADO.Net
nh ảnh phát nhỉ (Trang 5)
Câu lệnh cho phép tạo một bảng nằm trong một CSDL tương ứng.Sau đó các bạn quay lại SEM  để xem và nhập các dữ liệu vào các cột - Các đối tượng cơ bản của ADO.Net
u lệnh cho phép tạo một bảng nằm trong một CSDL tương ứng.Sau đó các bạn quay lại SEM để xem và nhập các dữ liệu vào các cột (Trang 8)
chọn vào CSDL mà bạn vưà tạo (1) rồi chọn đến ô chứa các bảng (2) rồi kích tiếp chuột ph ải vào bảng vừa tạo (3) rồi chọn đến Return all rows (4)  - Các đối tượng cơ bản của ADO.Net
ch ọn vào CSDL mà bạn vưà tạo (1) rồi chọn đến ô chứa các bảng (2) rồi kích tiếp chuột ph ải vào bảng vừa tạo (3) rồi chọn đến Return all rows (4) (Trang 8)
1. Select * from tên_bảng: Hiển thị tất cả các cột trong bảng - Các đối tượng cơ bản của ADO.Net
1. Select * from tên_bảng: Hiển thị tất cả các cột trong bảng (Trang 9)
insert into tên_bảng ho ặc insert into tên_bảng                            - Các đối tượng cơ bản của ADO.Net
insert into tên_bảng ho ặc insert into tên_bảng (Trang 10)
Câu lệnh cho phép điền thêm giá trị vào bảng, giá trị có thể là biế n( kí hiệu đối với SQL là @tên_bi ến ) hoặc có thể là giá trị cụ thể, nhưng cần chú ý là các giá trịđược điền vào  ph ải phù hợp với kiểu dữ liệu của cột - Các đối tượng cơ bản của ADO.Net
u lệnh cho phép điền thêm giá trị vào bảng, giá trị có thể là biế n( kí hiệu đối với SQL là @tên_bi ến ) hoặc có thể là giá trị cụ thể, nhưng cần chú ý là các giá trịđược điền vào ph ải phù hợp với kiểu dữ liệu của cột (Trang 10)
Delete from tên_bảng Where điều_kiện_logic - Các đối tượng cơ bản của ADO.Net
elete from tên_bảng Where điều_kiện_logic (Trang 11)
Update tên_bảng - Các đối tượng cơ bản của ADO.Net
pdate tên_bảng (Trang 12)
Bước 3: Xây dựng thủ tục - Các đối tượng cơ bản của ADO.Net
c 3: Xây dựng thủ tục (Trang 12)
Ok rồi, tab ắt đầu đi mô tả tầng data với hình ảnh mô tả trên. - Các đối tượng cơ bản của ADO.Net
k rồi, tab ắt đầu đi mô tả tầng data với hình ảnh mô tả trên (Trang 18)
Tại đây, ta mô tả cụ thể cho cơ sở dữ liệu của ta. Ở đây, ta sẽ lấy 1 bảng trong bài toán qu ản lí cửa hàng gas - Các đối tượng cơ bản của ADO.Net
i đây, ta mô tả cụ thể cho cơ sở dữ liệu của ta. Ở đây, ta sẽ lấy 1 bảng trong bài toán qu ản lí cửa hàng gas (Trang 24)
Các biến truyền vào cho biến thêm lấy từ các textbox , như hình minh họa sau: - Các đối tượng cơ bản của ADO.Net
c biến truyền vào cho biến thêm lấy từ các textbox , như hình minh họa sau: (Trang 26)

TỪ KHÓA LIÊN QUAN

w