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

Các hàm trong C

19 820 1
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

Tiêu đề Các hàm trong C
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại bài luận
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 19
Dung lượng 100,96 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các hàm trong C

Trang 1

//chúng ta đang xây d ng mô hinh ba lop trong co so du li uự ệ

using System;

using System.Collections;

using System.Collections.Generic;

using System.Data;

using System.Data.OleDb;

using System.Text;

using DTO;

namespace DAO

{

public class BookDao

{

// Hàm l y danh sách Bookấ

public IList GetBookList() {

// Kh i t o đ i tở ạ ố ượng k t n iế ố

OleDbConnection oledbCon = DataProvider.ConnectionData();

// Kh i t o và gán giá tr cho chu i truy v n c s d li uở ạ ị ỗ ấ ơ ở ữ ệ

string strSQL = "Select * From Book";

// Kh i t o đ i tở ạ ố ượng OleDBCommand th c thi câu truy v nự ấ

OleDbCommand oledbCmd = new OleDbCommand(strSQL, oledbCon);

// Kh i t o đ i tở ạ ố ượng OleDBDataReader

OleDbDataReader oledbDtr = oledbCmd.ExecuteReader();

// Kh i t o đ i tở ạ ố ượng ArrayList

ArrayList Arl = new ArrayList();

// Kh i t o đ i tở ạ ố ượng BookDto

BookDto BokDto = null;

// Trong khi OleDBDataReader còn có th đ cể ọ

while(oledbDtr.Read()) {

// Kh i t o l i đ i tở ạ ạ ố ượng BookDto

BokDto = new BookDto();

Trang 2

// Gán giá tr cho các trị ường c a BookDtoủ

// Gán giá tr cho BookIDị

BokDto.ID = (string)oledbDtr["BookID"]; // Gán giá tr cho BookNameị

BokDto.Name = (string)oledbDtr["BookName"];

// Gán giá tr cho BookDateOfPuslishị

BokDto.DateOfPuslish = (string)oledbDtr["BookDateOfPuslish"];

// Gán giá tr cho BookPriceị

BokDto.Price = (string)oledbDtr["BookPrice"];

// Gán giá tr cho BookStatusị

BokDto.Status = (string)oledbDtr["BookStatus"];

// Gán giá tr cho BookAmountị

BokDto.Amount = (string)oledbDtr["BookAmount"];

// Gán giá tr cho BookRemainị

BokDto.Remain = (string)oledbDtr["BookRemain"];

// Gán giá tr cho BookDecriptionị

BokDto.Decription = (string)oledbDtr["BookDecription"];

// Gán giá tr cho BookAuthorIDị

BokDto.AuthorID = (string)oledbDtr["BookAuthorID"];

// Gán giá tr cho BookCategoryIDị

BokDto.CategoryID = (string)oledbDtr["BookCategoryID"];

// Thêm đ i tố ượng BookDto v a t o vào ArrayListừ ạ

Arl.Add(BokDto);

}

// Đóng k t n i OleDBConnectionế ố

oledbCon.Close();

// Đóng k t n i OleDBDataReaderế ố

oledbDtr.Close();

Trang 3

// Tr v đ i tả ề ố ượng ArrayList

return Arl;

}

// Hàm l y m t đ i tấ ộ ố ượng BookDto t c s d li u khi bi từ ơ ở ữ ệ ế

BookID

public BookDto GetBook(string stringBookID)

{

// Kh i t o đ i tở ạ ố ượng k t n iế ố

OleDbConnection oledbCon = DataProvider.ConnectionData(); // Kh i t o và gán giá tr cho chu i truy v n c s d li uở ạ ị ỗ ấ ơ ở ữ ệ

string strSQL = "Select * From Book Where BookID = ?";

// Kh i t o đ i tở ạ ố ượng OleDBCommand th c thi v i tham s làự ớ ố chu i truy v n và đ i tỗ ấ ố ượng k t n iế ố

OleDbCommand oledbCmd = new OleDbCommand(strSQL, oledbCon);

// Gán tham s cho các trố ường

// Gán tham s cho AuthorIDố

oledbCmd.Parameters.Add("@BookID", OleDbType.WChar); oledbCmd.Parameters["@BookID"].Value = stringBookID;

// Kh i t o đ i tở ạ ố ượng OleDBDataReader th c thi có truy v n câuự ấ

l nhệ

OleDbDataReader oledbDtr = oledbCmd.ExecuteReader();

// Kh i t o đ i tở ạ ố ượng AuthorDto

BookDto bookDto = new BookDto();

// Trong khi đ i tố ượng OleDBDataReader còn có th đ cể ọ

while (oledbDtr.Read())

{

// Gán giá tr cho đ i tị ố ượng BookDto

// Gán giá tr cho BookIDị

bookDto.ID = (string)oledbDtr["BookID"];

// Gán giá tr cho BookNameị

bookDto.Name = (string)oledbDtr["BookName"];

Trang 4

// Gán giá tr cho BookDateOfPuslishị

bookDto.DateOfPuslish =

(string)oledbDtr["BookDateOfPuslish"];

// Gán giá tr cho BookPriceị

bookDto.Price = (string)oledbDtr["BookPrice"];

// Gán giá tr cho BookStatusị

bookDto.Status = (string)oledbDtr["BookStatus"];

// Gán giá tr cho BookAmountị

bookDto.Amount = (string)oledbDtr["BookAmount"];

// Gán giá tr cho BookRemainị

bookDto.Remain = (string)oledbDtr["BookRemain"];

// Gán giá tr cho BookDecriptionị

bookDto.Decription = (string)oledbDtr["BookDecription"]; // Gán giá tr cho BookAuthorIDị

bookDto.AuthorID = (string)oledbDtr["BookAuthorID"];

// Gán giá tr cho BookCategoryIDị

bookDto.CategoryID = (string)oledbDtr["BookCategoryID"]; }

// Đóng k t n iế ố

oledbCon.Close();

// Tr v đ i tả ề ố ượng AuthorDto

return bookDto;

}

// Hàm thêm Book v i tham s là BookDtoớ ố

public void AddBook(BookDto bookDto)

{

// Kh i t o đ i tở ạ ố ượng k t n iế ố

OleDbConnection oledbCon = DataProvider.ConnectionData(); // Kh i t o và gán giá tr cho chu i truy v n c s d li uở ạ ị ỗ ấ ơ ở ữ ệ

string strSQL = "Insert Into Book( BookID, BookName,

BookDateOfPuslish, BookPrice, BookStatus, BookAmount,

BookRemain, BookDecription, BookAuthorID, BookCategoryID)

Values( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

// Kh i t o đ i tở ạ ố ượng OleDBCommand v i tham s là chu i truyớ ố ỗ

v n và đ i tấ ố ượng k t n iế ố

Trang 5

OleDbCommand oledbCmd = new OleDbCommand(strSQL, oledbCon);

// Gán tham s cho các trố ường

// Gán tham s cho BookIDố

oledbCmd.Parameters.Add("@BookID", OleDbType.WChar); oledbCmd.Parameters["@BookID"].Value = bookDto.ID;

// Gán tham s cho BookNameố

oledbCmd.Parameters.Add("@BookName", OleDbType.WChar); oledbCmd.Parameters["@BookName"].Value = bookDto.Name; // Gán tham s cho BookDateOfPuslishố

oledbCmd.Parameters.Add("@BookDateOfPuslish",

OleDbType.WChar);

oledbCmd.Parameters["@BookDateOfPuslish"].Value =

bookDto.DateOfPuslish;

// Gán tham s cho BookPriceố

oledbCmd.Parameters.Add("@BookPrice", OleDbType.WChar); oledbCmd.Parameters["@BookPrice"].Value = bookDto.Price; // Gán tham s cho BookStatusố

oledbCmd.Parameters.Add("@BookStatus", OleDbType.WChar); oledbCmd.Parameters["@BookStatus"].Value = bookDto.Status; // Gán tham s cho BookAmountố

oledbCmd.Parameters.Add("@BookAmount",

OleDbType.WChar);

oledbCmd.Parameters["@BookAmount"].Value =

bookDto.Amount;

// Gán tham s cho BookRemainố

oledbCmd.Parameters.Add("@BookRemain",

OleDbType.WChar);

oledbCmd.Parameters["@BookRemain"].Value =

bookDto.Remain;

// Gán tham s cho BookDecriptionố

oledbCmd.Parameters.Add("@BookDecription",

OleDbType.WChar);

oledbCmd.Parameters["@BookDecription"].Value =

bookDto.Decription;

// Gán tham s cho BookAuthorIDố

Trang 6

oledbCmd.Parameters.Add("@BookAuthorID",

OleDbType.WChar);

oledbCmd.Parameters["@BookAuthorID"].Value =

bookDto.AuthorID;

// Gán tham s cho BookCategoryIDố

oledbCmd.Parameters.Add("@BookCategoryID",

OleDbType.WChar);

oledbCmd.Parameters["@BookCategoryID"].Value =

bookDto.CategoryID;

// Th c thi không truy v n c s d li u b ng đ i tự ấ ơ ở ữ ệ ằ ố ượ ng

OleDBCommand

oledbCmd.ExecuteNonQuery();

// Đóng k t n iế ố

oledbCon.Close();

}

// Hàm xóa m t Book khi bi t BookIDộ ế

public void DeleteBook(string stringBookID)

{

// Kh i t o đ i tở ạ ố ượng k t n iế ố

OleDbConnection oledbConnection =

DataProvider.ConnectionData();

// Kh i t o và gán giá tr cho chu i truy v n c s d li uở ạ ị ỗ ấ ơ ở ữ ệ string stringSql = "Delete * From Book Where BookID = ?";

// Kh i t o đ i tở ạ ố ượng OleDBCommand

OleDbCommand oledbCommand = new

OleDbCommand(stringSql, oledbConnection);

// Gán tham sô cho các trường

oledbCommand.Parameters.Add("@BookID",

OleDbType.WChar);

oledbCommand.Parameters["@BookID"].Value = stringBookID; // Th c thi không truy v n c s d li uự ấ ơ ở ữ ệ

Trang 7

oledbCommand.ExecuteNonQuery();

// Đóng k t n iế ố

oledbConnection.Close();

}

// Hàm c p nh t thông tin Bookậ ậ

public void UpdateBook(BookDto bookDto)

{

// Kh i t o đ i tở ạ ố ượng k t n i c s d li uế ố ơ ở ữ ệ

OleDbConnection oledbConnection =

DataProvider.ConnectionData();

// Kh i t o và gán giá tr cho chu i truy v n c s d li uở ạ ị ỗ ấ ơ ở ữ ệ string stringSql = "Update Book Set BookName = ?,

BookDateOfPuslish = ?, BookPrice = ?, BookStatus = ?, BookAmount

= ?, BookRemain = ?, BookDecription = ?, BookAuthorID = ?,

BookCategoryID = ? Where BookID = ?";

// Kh i t o đ i tở ạ ố ượng OleDBCommand

OleDbCommand oledbCommand = new

OleDbCommand(stringSql, oledbConnection);

// Gán tham s cho các giá trố ị

// Gán tham s cho BookNameố

oledbCommand.Parameters.Add("@BookName",

OleDbType.WChar);

oledbCommand.Parameters["@BookName"].Value =

bookDto.Name;

// Gán tham s cho BookDateOfPuslishố

oledbCommand.Parameters.Add("@BookDateOfPuslish", OleDbType.WChar);

oledbCommand.Parameters["@BookDateOfPuslish"].Value = bookDto.DateOfPuslish;

// Gán tham s cho BookPriceố

oledbCommand.Parameters.Add("@BookPrice",

OleDbType.WChar);

oledbCommand.Parameters["@BookPrice"].Value =

bookDto.Price;

// Gán tham s cho BookStatusố

Trang 8

oledbCommand.Parameters.Add("@BookStatus",

OleDbType.WChar);

oledbCommand.Parameters["@BookStatus"].Value =

bookDto.Status;

// Gán tham s cho BookAmountố

oledbCommand.Parameters.Add("@BookAmount",

OleDbType.WChar);

oledbCommand.Parameters["@BookAmount"].Value =

bookDto.Amount;

// Gán tham s cho BookRemainố

oledbCommand.Parameters.Add("@BookRemain",

OleDbType.WChar);

oledbCommand.Parameters["@BookRemain"].Value =

bookDto.Remain;

// Gán tham s cho BookDecriptionố

oledbCommand.Parameters.Add("@BookDecription",

OleDbType.WChar);

oledbCommand.Parameters["@BookDecription"].Value = bookDto.Decription;

// Gán tham s cho BookAuthorIDố

oledbCommand.Parameters.Add("@BookAuthorID",

OleDbType.WChar);

oledbCommand.Parameters["@BookAuthorID"].Value = bookDto.AuthorID;

// Gán tham s cho BookCategoryIDố

oledbCommand.Parameters.Add("@BookCategoryID",

OleDbType.WChar);

oledbCommand.Parameters["@BookCategoryID"].Value = bookDto.CategoryID;

// Gán tham s cho BookIDố

oledbCommand.Parameters.Add("@BookID",

OleDbType.WChar);

oledbCommand.Parameters["@BookID"].Value = bookDto.ID;

// Th c thi chu i truy v n c s d li uự ỗ ấ ơ ở ữ ệ

oledbCommand.ExecuteNonQuery();

// Đóng k t n iế ố

Trang 9

oledbConnection.Close();

sqlconnection.Open()//mo chuoi ket noi

}

}

}

K thu t l p trình 3.0 v i C#ỹ ậ ậ ớ

Ngườ ậi l p trình đã d dàng ti p c n v i l p trình FP do nhi u k thu tễ ế ậ ớ ậ ề ỹ ậ trong C# 3.0 có đi m chung v i FP Đ i v i ngể ớ ố ớ ườ ậi l p trình OOP, c mả

nh n đ u tiên khi làm vi c v i C# 3.0 là s thay đ i v cú pháp l pậ ầ ệ ớ ự ổ ề ậ trình v i các k thu t nh Anonymous type, Lambda Expression hayớ ỹ ậ ư Lazy evaluation K t h p các k thu t này l i v i nhau s gi m thi uế ợ ỹ ậ ạ ớ ẽ ả ể

s lố ượng công vi c và áp l c công vi c cho ngệ ự ệ ườ ậi l p trình, đ ng th iồ ờ làm tăng tính hi u qu c a s n ph m do code nh , g n,ệ ả ủ ả ẩ ỏ ọ

Type Inference – Anonymous type:

Type Inference: Được dùng đ khai báo bi n v i t khóa “var” màể ế ớ ừ không c n đ nh nghĩa ki u d li u Trình biên d ch s t đ ng suy lu nầ ị ể ữ ệ ị ẽ ự ộ ậ

ki u b ng cách tham chi u đ n giá tr để ằ ế ế ị ược gán cho bi n Tuy nhiênế

ki u khai báo này ch để ỉ ượ ử ục s d ng trong ph m vi local.ạ

var Name =”An”;

var Age = “1/1/1980”;

var Numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Anonymous type: được xây d ng trên khái ni m “Tuple” - t p m t dãyự ệ ậ ộ

d li u Thí d dữ ệ ụ ưới đây có 3 Tuple

Name:An

salary:300

City: Ho Chi Minh

Anonymous type dùng đ đ nh nghĩa m t ki u d li u m i nh ngể ị ộ ể ữ ệ ớ ư

Trang 10

không c n ch rõ tên và c u trúc d li u.ầ ỉ ấ ữ ệ

var myInfo = new {Name =”An”, Age=”1/1/1980”, Salary=300};

var mySalary = myInfo.Salary * 2;

Bi n myInfo đế ược kh i t o v i m t ki u d li u hoàn toàn m i nh ngở ạ ớ ộ ể ữ ệ ớ ư không đ nh nghĩa c u trúc rõ ràng Phép toán “var mySalary =ị ấ

myInfo.Salary*2” không gây ra l i b i trình biên d ch hi u rõ c u trúcỗ ở ị ể ấ

ki u d li u c a myInfo M t trong nh ng u đi m c a Anonymousể ữ ệ ủ ộ ữ ư ể ủ type là k t h p v i Type Inference trong vi c tham chi u d li u.ế ợ ớ ệ ế ữ ệ

ng d ng Type Inference – Anonymous type trong vi c tham chi u d

li u: các d án ít hay nhi u đ u liên quan đ n tệ ự ề ề ế ương tác v i d li u vàớ ữ ệ

ngườ ậi l p trình ph i vi t nh ng đo n mã đ l c m t t p d li u m iả ế ữ ạ ể ọ ộ ậ ữ ệ ớ

t t p d li u ban đ u T p d li u m i có th ít field h n hay có thừ ậ ữ ệ ầ ậ ữ ệ ớ ể ơ ể

k t h p v i t p d li u khác nhi u field h n Công vi c này đế ợ ớ ậ ữ ệ ề ơ ệ ược g iọ

là tham chi u hay “Projection” Trế ước đây công vi c này thệ ường t nố khá nhi u th i gian do ph i đ nh nghĩa c u trúc d li u, vi t mã l u dề ờ ả ị ấ ữ ệ ế ư ữ

li u vào c u trúc m i mà đôi khi c u trúc d li u m i ch s d ngệ ấ ớ ấ ữ ệ ớ ỉ ử ụ trong m t hàm Amonumous type tr nên r t hi u qu trong nh ng yêuộ ở ấ ệ ả ữ

c u nh th V i t p d li u thí d 4, yêu c u t o m t danh sáchầ ư ế ớ ậ ữ ệ ở ụ ầ ạ ộ

nh ng ngữ ười tên “Huy” và danh sách m i này v i ch l y hai field Nameớ ớ ỉ ấ

và Salary và thêm m t field m i Allowance có th x lý nh sau:ộ ớ ể ử ư

Thí d 8: ụ

var searchList = from r in people

where r.Name == “Huy”

select new { r.Name, r.Salary, Allowance = r.Salary * 0.7 };

Ki u d li u m i “searchList” v i 3 field “Name, Salary, Allowance”ể ữ ệ ớ ớ

đượ ạc t o mà không c n đòi h i quá nhi u th i gian cho vi c đ nh nghĩaầ ỏ ề ờ ệ ị

c u trúc, vi t code hay phát hi n l i Tuy nhiên “Anonymous type” chấ ế ệ ỗ ỉ

s d ng trong pham vi local.ử ụ

Lambda Expression: Anonymous method h tr cách vi t inline codeỗ ợ ế

nh ng ch a có s thay đ i đáng k v cú pháp câu l nh Lambdaư ư ự ổ ể ề ệ

Expression là s phát tri n c a Anonymous method, giúp gi i quy tự ể ủ ả ế

Trang 11

gánh n ng c a ngặ ủ ườ ậi l p trình trong vi c vi t các đo n mã Có thệ ế ạ ể

hi u Lambda Expression nh m t hàm mang các bi n s Cú pháp “x =>ể ư ộ ế ố x+1” gi ng nh hàm có m t bi n “x” và giá tr tr v c a hàm là “x+1”.ố ư ộ ế ị ả ề ủ Lambda Expression được xây d ng trên n n c a lý thuy t “Lambdaự ề ủ ế calculus” được phát minh trong th p niên 1930 Kí t Lambda (?) c aậ ự ủ

người Hy L p đạ ược dùng đ t phía trặ ước các bi n s c a hàm Thí dế ố ủ ụ

dưới đây bi u di n hàm m t bi n và hàm hai bi n b ng Lambdaể ễ ộ ế ế ằ

Expression và cú pháp trong ngôn ng C# 3.0.ữ

f(x) = x f(x,y) = x + y

Lambda Expression x ? x (x,y) ? x + y

C# 3.0 x => x (x,y) => x + y

Nh vào cú pháp đ n gi n, nên dòng l nh cũng đ n gi n.ờ ơ ả ệ ơ ả

Thí du 9:

Func Add = (x, y) => x + y;

Lambda Expression có th không có m t tham s (parameter) nào ho cể ộ ố ặ

có nhi u parameter và các parameter này cũng có th đề ể ược khai báo

ki u ho c không c n khai báo ki u.ể ặ ầ ể

n => (n-1)*(n-2)

x => (x % 2) == 0

(int x) => (x % 2) == 0

p => p.Name == “Huy” && p.Age > 25

Các k thu t Closure hay Currying đ u có th s d ng trong Lambdaỹ ậ ề ể ử ụ Expression

Closure trong Lambda Expression là kh năng hi u và ki m soát bi nả ể ể ế không n m trong ph m vi c a bi u th c.ằ ạ ủ ể ứ

Thí d 10: ụ

int x = 99;

Func add = y => y + x;

int firstResult = add(1); // 99 + 1 = 100

int secondResult = add(2); // 99 + 2 = 101

Ngày đăng: 16/08/2012, 10:40

Xem thêm

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w