Truy xuất cơ sở dữ liệu bằng ado

39 29 0
  • Loading ...
1/39 trang

Thông tin tài liệu

Ngày đăng: 25/11/2016, 23:04

công nghệ ado (activex data object), truy xuất cơ sở dữ liệu bằng ado×ung cấp các lớp để thao tác CSDL trong cả hai môi trường là phi kết nối (Disconected data) và kết nối (Connected data).Tích hợp chặt chẽ với XML (Extensible Markup Language)Tương tác với nhiều nguồn dữ liệu thông qua mô tả dữ liệu chung.Tối ưu truy cập nguồn dữ liệu (OLE DB SQL server).Làm việc trên môi trường Internet.Các lớp của ADO.NET được đặt trong Namespace là System.Data System.Data.oledb ADO.NET 1/ Bài 01: ADO.NET 2/ Bài 02: The SqlConnection Object 3/ Bài 03: The SqlCommand Object 4/ Bài 04: Reading Data with the SqlDataReader 5/ Bài 05: Working with Disconnected Data - The DataSet and SqlDataAdapter 6/ Bài 06: Adding Parameters to Commands 7/ Bài 07: Using Stored Procedures Bài 1: ADO.NET 1/ Giới thiệu: ADO.Net thư viện hướng đối tượng, cho phép tương tác với nguồn liệu Thông thường, nguồn liệu CSDL, tập tin văn bản, bảng tính Excel, tập tin XML 2/ Data Providers Chúng ta biết ADO.NET cho phép tương tác với loại liệu khác loại sở liệu khác Tuy nhiên, tập hợp lớp học cho phép bạn thực điều Vì nguồn liệu khác có giao thức khác nhau, cần cách để giao tiếp với nguồn liệu cách sử dụng giao thức Một số nguồn liệu lớn sử dụng giao thức ODBC, nhiều nguồn liệu sử dụng giao thức OleDb, có nguồn liệu mà cho phép ta giao tiếp với chúng trực tiếp thông qua thư viện lớp NET ADO.NET ADO.NET cung cấp cách tương đối phổ biến để tương tác với nguồn liệu, kèm khác thư viện cách ta làm việc /nói chuyện với nguồn liệu Các thư viện gọi Data Providers Bảng sau liệt kê số Data Provider phổ biến, tiền tố API chúng sử dụng, loại nguồn liệu cho phép ta tương tác với Provider Name ODBC Data Provider OleDb Data Provider Oracle Data Provider SQL Data Provider Borland Data Provider Một ví dụ giúp ta hiểu ý nghĩa tiền tố API Một đối tượng ADO.NET ta tìm hiểu đối tượng kết nối, cho phép ta thiết lập kết nối đến nguồn liệu Nếu sử dụng Data Provider OleDb để kết nối với nguồn liệu cho thấy giao diện OleDb, sử dụng đối tượng kết nối có tên OleDbConnection Tương tự vậy, kết nối tên đối tượng bắt đầu ODBC Sql cho đối tượng OdbcConnection nguồn liệu ODBC đối tượng SqlConnection sở liệu SQL Server, tương ứng Vì sử dụng MSDE hướng dẫn (một phiên thu nhỏ SQL Server) tất đối tượng API có tiền tố Sql nghĩa SqlConnection 3/ Đối tượng ADO.NET: ADO.NET bao gồm nhiều đối tượng, ta sử dụng để làm việc với liệu Phần giới thiệu số đối tượng mà ta sử dụng Trong này, ta tiếp xúc với nhiều đối tượng ADO.NET ví dụ cụ thể Các đối tượng ta cần phải nắm vững Tìm hiểu cung cấp cho bạn ý tưởng điều ta làm với liệu sử dụng ADO.NET A/ The SqlConnection Object (đối tượng kết nối) Để tương tác với sở liệu, ta phải có kết nối đến Các kết nối giúp xác định máy chủ sở liệu, tên sở liệu, tên người dùng, mật thông số khác yêu cầu để kết nối đến sở liệu Một đối tượng kết nối sử dụng đối tượng lệnh ( Command Object) biết sở liệu để thực lệnh B/ The SqlCommand Object (đối tượng lệnh) Quá trình tương tác với sở liệu có nghĩa ta phải xác định hành động mà ta muốn thực Điều thực với đối tượng lệnh Ta sử dụng đối tượng lệnh để gửi lệnh SQL vào sở liệu Một đối tượng lệnh sử dụng đối tượng kết nối để tìm sở liệu để giao tiếp với Ta sử dụng đối tượng lệnh mình, để thực thi lệnh trực tiếp, gán tham chiếu đến đối tượng lệnh cho SqlDataAdapter, nắm giữ lệnh làm việc nhóm liệu mô tả C/ The SqlDataReader Object (đối tượng đọc liệu) Nhiều hoạt động / thao tác liệu đòi hỏi ta nhận dòng liệu để đọc Các đối tượng Data Reader cho phép ta có kết câu lệnh SELECT từ đối tượng lệnh Xét hiệu suất, liệu trả từ Data Reader luồng liệu nhanh chóng Điều có nghĩa ta lấy liệu từ luồng cách tuần tự, điều tốt cho tốc độ, ta cần thao tác liệu, DataSet đối tượng tốt để làm việc với D/ The DataSet Object (đối tượng DataSet) Đối tượng DataSet đại diện nhớ liệu Chúng chứa nhiều đối tượng khác DataTable, có chứa cột hàng, giống bảng sở liệu thông thường Ta xác định mối quan hệ bảng để tạo mối quan hệ cha-con DataSet thiết kế đặc biệt để giúp quản lý liệu nhớ hỗ trợ hoạt động ngắt kết nối vào liệu, kịch có ý nghĩa quản lý DataSet đối tượng sử dụng tất Data Provider, lý tiền tố cụ thể cung cấp liệu E/ The SqlDataAdapter Object () Đôi với liệu ta làm việc chủ yếu đọc ta cần phải thực thay đổi nguồn liệu bên Một số tình gọi đệm liệu nhớ để giảm bớt số lượng gọi sở liệu cho liệu mà không thay đổi Các Data Adapter (bộ chuyển đổi liệu) làm cho dễ dàng cách giúp đỡ việc quản lý liệu chế độ ngắt kết nối Các Data Adapter điền vào đối tượng DataSet đọc ghi liệu đợt Một Data Adapter có chứa tham chiếu đến đối tượng kết nối mở, đóng kết nối tự động đọc ghi với sở liệu Ngoài ra, Data Adapter chứa tham chiếu đối tượng lệnh cho SELECT, INSERT, UPDATE, DELETE liệu Ta định nghĩa Data Adapter cho bảng DataSet quản lý tất giao tiếp với sở liệu 4/ Tóm lược: ADO.NET công nghệ NET để tương tác với nguồn liệu Ta có vài Data Provider, cho phép giao tiếp với nguồn liệu khác nhau, tùy thuộc vào giao thức sử dụng Bất kể, Data Provider sử dụng, ta sử dụng tương tự đối tượng tương tác với nguồn liệu Các đối tượng SqlConnection cho phép ta quản lý kết nối với nguồn liệu Đối tượng SqlCommand cho phép bạn nói chuyện với nguồn liệu gửi lệnh đến Để nhanh chóng đọc truy cập vào liệu ta sử dụng SqlDataReader Nếu ta muốn làm việc với liệu bị ngắt kết nối, sử dụng DataSet thực việc đọc từ / ghi đến nguồn liệu SqlDataAdapter Bài 2: The SqlConnection Object 1/ Giới thiệu: Điều ta cần phải làm tương tác với sở liệu tạo kết nối Các kết nối nói chuyện với cho phần lại mã ADO.NET sở liệu Nó quản lý tất logic mức thấp kết hợp với giao thức sở liệu cụ thể Điều làm dễ nhanh chóng cho công việc đối tượng kết nối, mở kết nối, đóng kết nối công việc hoàn thành A/ Tạo SqlConnection Object Một đối tượng SqlConnection, giống đối tượng C # khác Ta cần khai báo khởi tạo SqlConnection tất lúc, mẫu sau: SqlConnection conn = new SqlConnection( "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"); Đối tượng SqlConnection khởi tạo sử dụng phương thức constructor với đối số đơn kiểu chuỗi đối số gọi chuỗi kết nối Bảng sau mô tả phận chuỗi kết nối Connection String Paramete Data Source Initial Catalog Integrated Security User ID Password Vd: Tích hợp an toàn ta máy tính Tuy nhiên, Ta thường muốn định bảo mật dựa SQL Server ID người dùng với thiết lập cấp phép đặc biệt cho ứng dụng mà bạn sử dụng Sau cho thấy chuỗi kết nối, sử dụng User ID mật thông số: SqlConnection conn = new SqlConnection ("Data Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword"); Chú ý: nguồn liệu thiết lập để DatabaseServer để ta xác định sở liệu nằm máy tính khác, qua mạng LAN, qua Internet Ngoài ra, User ID mật thay thông số an toàn tích hợp B/ Sử dụng SqlConnection Mục đích việc tạo đối tượng SqlConnection Ta kích hoạt mã ADO.NET khác để làm việc với sở liệu Đối tượng ADO.NET khác, chẳng hạn SqlCommand SqlDataAdapter cần đối tượng kết nối tham số Chuỗi hoạt động xảy đời SqlConnection sau: Khởi tạo SqlConnection Mở kết nối Thông qua kết nối để làm việc với đối tượng ADO.NET khác Thực hoạt động sở liệu với đối tượng ADO.NET khác Đóng kết nối Chú ý: • • • • DataSource server name SQL Server Catalog tên sở liệu cần kết nối User ID password tài khoản SQL Server Chú ý cách kết nối xem chuỗi kết nối VS 2/ Tóm lược: Đối tượng SqlConnection để mã ADO.NET khác biết sở liệu kết nối làm để kết nối thứ khác Các bước ta sử dụng để quản lý vòng đời kết nối tạo ra, mở, chuyển, sử dụng, đóng Hãy chắn để đóng kết nối ta thực với để đảm bảo bạn rò rỉ tài nguyên kết nối Bài 3: The SqlCommand Object 1/ Giới thiệu: Một đối tượng SqlCommand cho phép ta xác định loại tương tác ta muốn thực với sở liệu Ví dụ, ta làm chọn, thêm, sửa đổi xóa dòng liệu bảng sở liệu Các đối tượng SqlCommand sử dụng để hỗ trợ tình quản lý liệu bị ngắt kết nối, Ta sử dụng đối tượng SqlCommand Một học sau SqlDataAdapter giải thích làm để thực ứng dụng sử dụng liệu bị ngắt kết nối Bài học cho bạn thấy làm để lấy giá trị từ sở liệu, chẳng hạn số lượng Record bảng Tạo đối tượng SqlCommand Tương tự đối tượng C# khác, ta tạo thể đối tượng SqlCommand theo mẫu sau: SqlCommand cmd = new SqlCommand("lệnh SQL", conn); Vd: SqlCommand cmd = new SqlCommand("select Hoten from SinhVien", conn); 2/ Querying Data Khi sử dụng lệnh select SQL, ta lấy tập hợp liệu để xem Để thực điều với đối tượng SqlCommand, ta sử dụng phương thức ExecuteReader, trả đối tượng SqlDataReader Chúng ta thảo luận SqlDataReader học sau Vd: cho thấy làm để sử dụng đối tượng SqlCommand để có đối tượng SqlDataReader: // Khởi tạo lệnh truy vấn theo kết nối conn SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn); // Gọi Execute reader để nhận kết truy vấn SqlDataReader rdr = cmd.ExecuteReader(); Ví dụ khởi tạo đối tượng SqlCommand, thông qua chuỗi lệnh SQL đối tượng kết nối Sau ta có đối tượng Data Reader cách gọi phương thức thi hành ExecuteReader đối tượng SqlCommand 3/ Thêm liệu (Inserting Data): Để thêm liệu vào sở liệu, sử dụng phương thức ExecuteNonQuery đối tượng SqlCommand Mẫu sau cho thấy làm để chèn liệu vào bảng sở liệu: // Tạo lệnh Insert để thêm liệu vào bảng Categories string insertString = @" insert into Categories (CategoryName, Description) values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')"; // Khởi tạo SqlCommand với connection conn SqlCommand cmd = new SqlCommand(insertString, conn); // Gọi ExecuteNonQuery để gởi lệnh cmd.ExecuteNonQuery(); Thay chuỗi chữ tham số SqlCommand, ta sử dụng biến insertString Biến insertString khai báo trước khai báo SqlCommand Chú ý hai dấu nháy ('') văn insertString cho từ "doesn''t" Đây cách ta thoát khỏi dấu nháy đơn để có chuỗi Một quan sát lệnh insert xác định rõ ràng cột CategoryName Description Các bảng Categories có trường tiểu học trọng tên CategoryID Chúng rời khỏi danh sách SQL Server thêm vào lĩnh vực cố gắng để thêm giá trị cho trường tiểu học trọng, chẳng hạn CategoryID, tạo ngoại lệ 4/ Updating Data Phương thức ExecuteNonQuery sử dụng cho việc cập nhật liệu Mẫu sau cho thấy làm để cập nhật liệu: // tạo lệnh Update string updateString = @" update Categories set CategoryName = 'Other' where CategoryName = 'Miscellaneous'"; // Khởi tạo SqlCommand với conn SqlCommand cmd = new SqlCommand(updateString); // Đặt thuộc tính conn cmd.Connection = conn; // Gọi ExecuteNonQuery để gởi lệnh cmd.ExecuteNonQuery(); Ta thực lệnh insert, với hai tham số Phương thức ExecuteNonQuery thực lệnh cập nhật 5/ Deleting Data Ta xóa liệu cách sử dụng phương thức ExecuteNonQuery Mẫu sau cho thấy làm để xóa Record sở liệu: // Tạo chuỗi lệnh Delete string deleteString = @"delete from Categories where CategoryName = 'Other'"; // Khởi tạo SqlCommand SqlCommand cmd = new SqlCommand(); // Đặt thuộc tính CommandText chuỗi lệnh Delete cmd.CommandText = deleteString; // Đặt thuộc tính conn cmd.Connection = conn; // Gọi ExecuteNonQuery để gởi lệnh cmd.ExecuteNonQuery(); Ví dụ sử dụng SqlCommand tham số Mặt khác, đặt thuộc tính CommandText kết nối đối tượng SqlCommand 6/ Nhận giá trị đơn từ truy vấn Đôi tất bạn cần từ sở liệu giá trị nhất, số, tổng, trung bình, giá trị tổng hợp khác từ tập hợp liệu Thực ExecuteReader tính toán kết mã bạn cách hiệu để làm điều Sự lựa chọn tốt sở liệu thực công việc trở giá trị mà bạn cần Mẫu sau cho thấy làm để làm điều với phương thức ExecuteScalar: // Khởi tạo SqlCommand SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn); // Gọi ExecuteNonQuery để gởi lệnh int count = (int)cmd.ExecuteScalar(); Truy vấn SqlCommand có số record từ bảng Categories Truy vấn trả lại giá trị Các phương pháp ExecuteScalar bước trả giá trị Từ kiểu trả ExecuteScalar loại đối tượng, sử dụng phép toán để chuyển đổi giá trị int Vd: Gộp tất cả: Để đơn giản, cho thấy đoạn mã phần trước để chứng minh kỹ thuật áp dụng Nó hữu ích để có danh sách toàn mã để xem làm mã sử dụng chương trình Có Database BAITAP, Table ChuyenGia sau: using using using using System; System.Collections.Generic; System.Data; System.Data.SqlClient; class SqlCommandDemo { SqlConnection conn; public SqlCommandDemo() //constructor Class { // Khởi tạo connection SqlConnection conn = new SqlConnection(@"server = \SQLEXPRESS;database = BAITAP;integrated security = true"); /*hoặc dùng: Tham số thử hai phương thức Update() bảng DataSet cập nhật Bảng chứa danh sách dòng liệu bị thay đổi property Insert, Update, Delete SqlDataAdapter chứa lệnh SQL dùng để thực thay đối database 6/ Tóm lược DataSet chứa nhiều bảng lưu nhớ để tái sử dụng SqlDataAdapter cho phép ta đổ liệu vào DataSet cập nhật thay đổi vào database Ta không cần quan tâm việc mở đóng SqlConnection SqlDataAdapter tự động làm việc Một SqlCommandBuilder tạo câu lệnh insert, update, delete dựa câu select SqlDataAdapter Dùng phương thức Fill() SqlDataAdapter để đổ liệu vào DataSet Gọi phương thức Update() SqlDataAdapter để cập nhật thay đổi vào lại database Vd: thực phần Windows Form Bài tập 1/ Tạo CSDL, tạo bảng có quan hệ liệu sau: DSTHI: DSDIEMCONG: Viết chương trình hiển thị Sinh viên có điểm cộng sau (dùng Console): Giải: using System; using System.Data; using System.Data.SqlClient; namespace Bai6 { class ReaderDemo { static void Main() { ReaderDemo rd = new ReaderDemo(); rd.SimpleRead(); // gọi phương thức SimpleRead() Console.ReadKey(); } public void SimpleRead() //phương thức đọc liệu { // khai báo SqlDataReader SqlDataReader rdr = null; // tạo đối tượng connection SqlConnection conn = new SqlConnection(@"server = \SQLEXPRESS;database = BAITAP;integrated security = true"); // tạo command SqlCommand cmd = new SqlCommand("Select D1.MSSV, D1.HOTEN, D2.DIEMCONG, D2.LYDO From DSTHI D1, DSDIEMCONG D2 Where (D1.MSSV = D2.MSSV) ", conn); try { // mở connection conn.Open(); // nhận thể SqlDataReader rdr = cmd.ExecuteReader(); // xuất tên Field / cột làm tiêu đề Console.WriteLine("Ma so SV Hoten Diem cong Ly do"); Console.WriteLine(" -"); // xuất liệu while (rdr.Read()) { // xuất nội dung Console.Write("{0,-12}",rdr["MSSV"]); Console.Write("{0,-30}", rdr["Hoten"]); Console.Write("{0,-5}", rdr["DIEMCONG"]); Console.WriteLine("{0,-30}", rdr["LYDO"]); } } finally { // đóng SqlDataReader if (rdr != null) { rdr.Close(); } } } } } // đóng connection if (conn != null) { conn.Close(); } Bài 6: Thêm tham số cho lệnh (Adding Parameters to Commands) 1/ Giới thiệu Khi bạn làm việc với liệu, Ta thường xuyên cần lọc kết dựa vài điều kiện Thông thường điều thực cách lấy liệu nhập từ người dùng tạo câu truy vấn SQL từ Ví dụ, người quản lý cần xem tất hóa đơn khoảng thời gian xác định, truy vấn khác lọc khách hàng theo thành phố Câu truy vấn SQL gán vào đối tượng SqlCommand chuỗi Vì thế, ta muốn tạo truy vấn lọc, ta phải tạo chuỗi động Đây ví dụ cho việc tạo câu truy vấn lọc SqlCommand cmd = new SqlCommand( "select * from Customers where city = '" + inputCity + "'"; Đừng tạo câu truy vấn theo cách trên! Biến chứa liệu nhập inputCity, lấy liệu từ TextBox Windows Form Web Page Bất kỳ thứ TextBox đặt vào inputCity thêm vào câu SQL Cách làm bị hacker thay chuỗi thứ gây hại (SQL Injection) Trong trường hợp xấu nhất, ta bị lấy toàn quyền điều khiển máy tính Thay tạo chuỗi động, ví dụ trên, sử dụng tham số (parameter) Bất kỳ thứ đặt vào parameter coi trường liệu, phần câu lệnh SQL, điều giúp ứng dụng ta an toàn Dùng câu truy vấn với parameter bao gồm ba bước sau: Tạo SqlCommand từ lệnh SQL có tham số (parameter) Khai báo đối tượng SqlParameter, gán giá trị thích hợp cho Gán đối tượng SqlParameter vào property Parameters đối tượng SqlCommand Các phần sau hướng dẫn bước trình 2/ Tạo đối tượng SqlCommand sử dụng Parameter Bước tạo câu lệnh chứa parameter (tên parameter) Tên thay giá trị thực parameter SqlCommand thực thi Cú pháp parameter dùng ký hiệu tiền tố ‘@’ tên parameter sau: // Khai báo đối tượng commandvới parameter SqlCommand cmd = new SqlCommand("select * from Customers where city = @City", conn); Trong constructor SqlCommand trên, tham số chứa khai báo parameter @City Ví dụ dùng parameter, ta dùng nhiều parameter tùy theo yêu cầu truy vấn Mỗi parameter so khớp với đối tượng SqlParameter gán vào đối tượng SqlCommand 3/ Khai báo đối tượng SqlParameter Mỗi parameter câu lệnh SQL phải định nghĩa Đây mục đích kiểu SqlParameter Mã nguồn bạn phải định nghĩa đối tượng SqlParameter cho parameter câu lệnh SQL đối tượng SqlCommand Đoạn mã sau định nghĩa SqlParameter cho parameter @City phần trước: // Định nghĩa tham số dùng đối tượng command SqlParameter param = new SqlParameter(); param.ParameterName = “@City”; param.Value = inputCity; Lưu ý thuộc tính ParameterName đối tượng SqlParameter phải viết với parameter dùng câu lệnh SQL SqlCommand Ta phải xác định giá trị cho parameter Khi đối tượng SqlCommand thực thi, parameter thay giá trị 4/ Kết hợp đối tượng SqlParameter với đối tượng SqlCommand Với parameter định nghĩa câu lệnh SQL đối tượng SqlCommand phải định nghĩa SqlParameter Ta phải để đối tượng SqlCommand biết SqlParameter cách gán đối tượng SqlParameter cho thuộc tính Parameters đối tượng SqlCommand Dòng mã sau cho thấy cách làm điều này: // Thêm parameter vào đối tượng command cmd.Parameters.Add(param); Đối tượng SqlParameter tham số phương thức Add() thuộc tính Parameters đối tượng SqlCommand Ta thêm SqlParameter cho parameter định nghĩa câu lệnh SQL đối tượng SqlCommand Vd: Gộp tất Kết nối với Fiel BAITAP bảng ChuyenGia, chọn xem chuyên gia = 54 tuổi using System; using System.Data; using System.Data.SqlClient; class ParamDemo { static void Main() { // khai báo connection DataReader SqlConnection conn = null; SqlDataReader reader = null; Int16 inputCity = 54; try { true"); // khởi tạo mở conn = new SqlConnection(@"server = \SQLEXPRESS;database = BAITAP;integrated security = conn.Open(); // Khai báo đối tượng command có parameter SqlCommand cmd = new SqlCommand("select * from ChuyenGia where Tuoi = @Tuoi", conn); // định nghĩa parameters dùng đối tượng command SqlParameter param = new SqlParameter(); param.ParameterName = "@Tuoi"; param.Value = inputCity; // thêm tham số vào đối tượng command cmd.Parameters.Add(param); // nhận luồng liệu (data stream) reader = cmd.ExecuteReader(); while (reader.Read()) { Console.Write("{0,-10}", reader["MSCG"]); Console.Write("{0,-30}", reader["HOTEN"]); Console.Write("{0,3}", reader["TUOI"]); Console.WriteLine(); } Console.ReadKey(); } finally { // đóng reader if (reader != null) { reader.Close(); } // đóng connection if (conn != null) { conn.Close(); } } } } Bài Tập 2/ Tạo CSDL, tạo bảng DSTHI sau: Xuất danh sách thi Sinh viên có điểm BSQL >= X điểm ASQL >= y buổi vắng < buổi quy định (dùng tham số) Bài 7: Sử dụng Stored Procedures 1/ Giới thiệu Một stored procedure phải định nghĩa trước, thường xuyên sử dụng lại sở liệu SQL Server biên dịch stored procedure để chúng sử dụng hiệu Vì vậy, thay tự động xây dựng truy vấn mã nguồn, ta tận dụng lợi việc tái sử dụng hiệu suất lợi ích stored procedure (thủ tục lưu trữ) Các phần sau cho ta thấy làm để sửa đổi đối tượng SqlCommand để sử dụng stored procedure Ngoài ra, Ta thấy lý cần sử dụng tham số phần quan trọng thư viện ADO.NET 2/ Thực thi Stored Procedure Ngoài lệnh tích hợp với chuỗi, loại SqlCommand sử dụng để thực thủ tục lưu trữ Có hai tác vụ yêu cầu để thực điều này: đối tượng SqlCommand biết stored procedure để thực báo cho đối tượng SqlCommand thực thi stored procedure Hai bước hiển thị đây: // Tạo đối tượng xác định stored procedure SqlCommand cmd = new SqlCommand("tên stored procedure", conn); // thiết lập đối tượng lệnh để biết thực stored procedure cmd.CommandType = CommandType.StoredProcedure; Trong khai báo đối tượng SqlCommand trên, tham số thiết lập tên stored procedue Đây tên stored procedure sở liệu Tham số thứ hai đối tượng kết nối, giống đối tượng SqlCommand dùng để thực thi chuỗi truy vấn Lệnh thứ hai cho đối tượng SqlCommand xác định kiểu lệnh stored procedure Bằng cách đặt thuộc tính CommandType StoredProcedure 2/ Gởi tham số cho Stored Procedures Dùng tham số cho stored procedure giống sử dụng tham số cho chuỗi lệnh truy vấn Mẫu sau cho thấy điều này: // Tạo đối tượng cmd xác định stored procedure SqlCommand cmd = new SqlCommand("tên stored procedure", conn); // Thiết lập thuộc tính cho đối tượng command biết để thực thi stored procedure cmd.CommandType = CommandType.StoredProcedure; // Thêm tham số cho command, chuyển cho stored procedure cmd.Parameters.Add(new SqlParameter("@XYZ", biến xyz); Constructor SqlCommand định tên stored procedure tham số Thủ tục lưu trữ đặc biệt có tham số có tên @XYZ Tham số thứ biến xyz giá trị cung cấp cho tham số Vì vậy, phải sử dụng đối tượng SqlParameter Tên tham số truyền vào tham số stored procedure Sau thực lệnh giống ta làm với đối tượng SqlCommand khác Vd: A Full Example Tạo CSDL, tạo bảng DSTHI sau: Tạo thủ tục (stored procedure): không tham số có tham số Create Procedure DS1 As Select * From DSTHI Where (DIEMBSQL >=7 and DIEMASQL >=7 and DIEMLT >=7 and BUOIVANG = độ tuổi) Viết chương trình gọi stored procedure trên, chương trình có menu sau: 1/ Xem Danh sách chuyên gia 2/ Xoá chuyên gia theo độ tuổi 3/ Kết thúc chương trình Bài tập 4/ (sử dụng stored procedure) Cải tiến tập 3, thêm vào Menu sau: 1/ Xem Danh sách chuyên gia 2/ Thêm chuyên gia 3/ Xoá chuyên gia theo độ tuổi 4/ Sửa Tuổi chuyên gia 5/ Kết thúc chương trình [...]... chỉ đọc dữ liệu theo cách hướng tới Ta truy xuất dữ liệu bằng cách đọc từng dòng từ dòng Gọi phương thức Close để đóng SqlDataReader nhằm đảm bảo không có bất kỳ rò rỉ tài nguyên Bài 5: Disconnected Data - The DataSet và SqlDataAdapter 1/ Giới thiệu Một DataSet là một đối tượng chứa dữ liệu trong bộ nhớ và nó có thể bao gồm nhiều bảng DataSet chỉ chứa dữ liệu chứ không tương tác với nguồn dữ liệu Thay... cần dữ liệu của khách hàng trong khi họ đi công tác Khi bắt đầu ngày, họ sẽ cần đồng bộ dữ liệu với database chính để lấy các thông tin cập nhật mới nhất Trong suốt ngày hôm đó, họ sẽ thực hiện các thay đổi trên dữ liệu khách hàng hiện tại, thêm khách hàng mới, và nhập các hóa đơn mới Điều này hợp lệ vì họ có nguồn dữ liệu khách hàng riêng và những người khác không thể thay đổi trên cùng dòng dữ liệu. .. hiện truy vấn và gửi lệnh đến một cơ sở dữ liệu Nó có phương thức mà chuyên biệt cho các lệnh khác nhau • • • Phương thức ExecuteReader trả về một đối tượng SqlDataReader để xem kết quả của một truy vấn chọn Để chèn, cập nhật và xóa các lệnh SQL, bạn sử dụng phương thức ExecuteNonQuery Nếu bạn chỉ cần một tổng giá trị duy nhất từ một câu truy vấn, ExecuteScalar là sự lựa chọn tốt nhất Bài 4: Đọc dữ liệuvới... dùng để quản lý các kết nối với nguồn dữ liệu và cho chúng ta chế độ làm việc disconnected SqlDataAdapter mở một kết nối chỉ khi cần thiết và đóng nó ngay sau khi tác vụ được hoàn thành Ví dụ, SqlDataAdapter thực hiện các tác vụ sau, khi đổ dữ liệu vào DataSet: 1 2 3 Mở kết nối Đổ dữ liệu vào DataSet (Fill) Đóng kết nối và thực hiện các công việc sau, khi cập nhật dữ liệu nguồn với thay đổi của DataSet:... SqlDataReader 1/ Giới thiệu Một SqlDataReader là một kiểu đó là tốt cho việc đọc dữ liệu một cách hiệu quả nhất có thể Bạn không thể sử dụng nó để ghi dữ liệu SqlDataReaders thường được mô tả như luồng dữ liệu nhanh Ta có thể đọc từ các đối tượng SqlDataReader một cách tuần tự theo hướng Forward only (chỉ đi tới) Một khi ta đã đọc một số dữ liệu, ta có thể phải phải lưu nó bởi vì ta sẽ không thể quay trở lại và... Giới thiệu Khi bạn làm việc với dữ liệu, Ta có thể thường xuyên cần lọc kết quả dựa trên một vài điều kiện nào đó Thông thường điều này được thực hiện bằng cách lấy dữ liệu nhập từ người dùng và tạo ra câu truy vấn SQL từ đó Ví dụ, người quản lý cần xem tất cả hóa đơn trong một khoảng thời gian xác định, hoặc một truy vấn khác có thể là lọc các khách hàng theo thành phố Câu truy vấn SQL được gán vào đối... đối tượng ADO. NET khác Ta phải gọi ExecuteReader vào một đối tượng lệnh, như sau: SqlDataReader rdr = cmd.ExecuteReader(); Phương thức ExecuteReader của đối tượng SqlCommand, cmd, trả về một thể hiện SqlDataReader Tạo một SqlDataReader với lệnh new không có tác dụng gì cả 3/ Reading Data Như ví dụ ở bài trước, SqlDataReader trả về dữ liệu qua một luồng liên tục Để đọc dữ liệu, ta phải lấy dữ liệu từ... các công việc sau, khi cập nhật dữ liệu nguồn với thay đổi của DataSet: 1 2 3 Mở kết nối Ghi thay đổi từ DataSet vào dữ liệu nguồn (Update) Đóng kết nối Giữa 2 thao tác Fill và Update, các kết nối với nguồn dữ liệu được đóng lại và ta có thể tự do ghi, đọc dữ liệu với DataSet Đây chính là cơ chế của mô hình làm việc với disconnected data Từ đó ứng dụng sẵn sàng kết nối khi cần thiết, ứng dụng trở nên... tượng SqlCommand chỉ là một chuỗi Vì thế, nếu ta muốn tạo một truy vấn lọc, ta phải tạo một chuỗi động Đây là một ví dụ cho việc tạo một câu truy vấn lọc SqlCommand cmd = new SqlCommand( "select * from Customers where city = '" + inputCity + "'"; Đừng bao giờ tạo một câu truy vấn theo cách trên! Biến chứa dữ liệu nhập inputCity, có thể là lấy dữ liệu từ TextBox trên Windows Form hoặc Web Page Bất kỳ thứ... procedure trong cơ sở dữ liệu Tham số thứ hai là đối tượng kết nối, nó giống như đối tượng SqlCommand dùng để thực thi các chuỗi truy vấn Lệnh thứ hai cho các đối tượng SqlCommand là xác định kiểu lệnh là stored procedure Bằng cách đặt thuộc tính CommandType là StoredProcedure 2/ Gởi tham số cho Stored Procedures Dùng tham số cho stored procedure giống như sử dụng các tham số cho các chuỗi lệnh truy vấn Mẫu
- Xem thêm -

Xem thêm: Truy xuất cơ sở dữ liệu bằng ado, Truy xuất cơ sở dữ liệu bằng ado, Truy xuất cơ sở dữ liệu bằng ado

Mục lục

Xem thêm

Gợi ý tài liệu liên quan cho bạn

Nạp tiền Tải lên
Đăng ký
Đăng nhập