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

Học lập trình C căn bản

48 15 0

Đ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

C là một ngôn ngữ lập trình đơn giản, hiện đại, mục đích tổng quát, hướng đối tượng được phát triển bởi Microsoft bên trong phần khởi đầu .NET của họ, được phát triển chủ yếu bởi Anders Hejlsberg, một kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC. Loạt bài hướng dẫn này sẽ cung cấp cho bạn kiến thức cơ bản về lập trình C qua các khái niệm từ cơ bản đến nâng cao liên quan tới ngôn ngữ lập trình C.

I Chương : Hàm & toán tử C# Một số hàm tốn thơng dụng C#  Ở đề cập số hàm ta thường dùng thư viên method Math…() chứa số hàm toán hạng sau :  Math.Abs(-14) : lấy trị tuyệt đối -14 => KQ : 14  Math.Cos(16) ,Math.Sin(16) : lấy cos ,sin góc tính theo radian  Math.Atan(): trả góc có tiếp tuyến số lượng quy định  Math.Atan2(): trả góc có tiếp tuyến thương hai số quy định  Math Ceiling:các số nguyên nhỏ lớn với số quy định Trả  Math DivRem(5,6);Tính thương hai số trả phần lại tham số đầu  Math Equals(4,4): Xác định xem hai trường hợp đối tượng bình đẳng (Thừa kế từ Object)  Math Exp(): trả e nâng lên điện quy định  Math Floor():các số nguyên lớn nhỏ với số quy định Trả  Math IEEERemainder(): Trả phần lại việc phân chia số quy định số quy định  Math.Sinh(): Trả sin hyperbol góc độ quy định  Math Truncate():Tính phần khơng thể thiếu số  Math.Tanh():Trả tang hyperbol góc độ quy định  Math Round():Làm trịn giá trị cho số nguyên gần số quy định số thập phân  Math.Log(15,2) : lấy logarit số 15  Math.Log10(37): lấy logarit số 10 37  Math.Max(11 ,12) : lấy max = 12  Math.Min(11, 12) : lấy = 11  Math.PI : số pi = 3,14  Math.Pow(2,4) : lấy mũ = 2^4 = 16 , bình phương Math.Pow(x,2) = x bình phương  Math.Sqrt() lấy bậc hai , muốn lấy bậc hay 4, n ta dùng Math.Pow(number, Doubel(1/n)) Lưu ý: phải dùng Doubel (1/n) khơng phải 1/n, 1/n hiểu lấy phần nguyên Danh sách hàm tốn học mơ tả cách dùng có sẵn VS Các bạn làm sau để tìm đến: - Chọn: View > Object Browser > Cửa sổ - Trong tìm kiếm gõ System.Math* Trang EX: private void Example_MathClassFunctions() { int i = 0; i = Math.Pow(5, 5); MessageBox.Show("5 to the power= " + i); i = Math.Sqrt(5); MessageBox.Show("squre root of 5= " + i); i = Math.Round(5.68743); MessageBox.Show("round figure of 5.68743= " + i); i = Math.Min(4, 7); MessageBox.Show("minimum value in and 7= " + i); double j = 0; j = Math.Log(15); MessageBox.Show("Log value of 15 = " + j); j = Math.Sin(90); MessageBox.Show("sin 90 = " + j); int x = 511; int y = 50; int Value = 0; int Remainder = 0; Value = Math.DivRem(x, y, out Remainder); MessageBox.Show("value is = " + Value + " and reminder is = " + Remainder); Trang } II Các lệnh toán tử C# Vào liệu C# (trong môi trường Console) - C# hỗ trợ vào liệu môi trường Console thông qua đối tượng Console Đối tượng nằm thư viện (namespace) có tên: System - Để khai báo thư viện sử dụng dòng lệnh: using System; - Để xuất liệu (ra – output) sử dụng phương thức: Write: phương thức cho phép in liệu hình Console theo định dạng Dữ liệu số, biến, biểu thức Có tất 18 tải phương thức (overloadding method) phép thực in giá trị kiểu số, biến khác Trong có hàm tổng thường sử dụng là: Cú pháp: Console.Write(“chuỗi định dạng”,”danh sách đối số”); Trong đó: “Chuỗi định dạng”: chuỗi kí tự dạng hiển thị (trình bày liệu) Chuỗi định dạng là: Các kí tự: kí tự số (0,2,3,4….9) kí tự chữ ‘a’, ‘z’,’A’,’X’….’%’ Các kí tự (escape sequence): kí tự bắt đầu với dấu % dấu \ VD: kí tự điều khiển xuống dịng \n kí tự điều khiển nhẩy Tab \t Kí tự giữ chỗ (placeholder): kí tự giữ chỗ có dạng {n} Trong n số nguyên số thứ tự đối số “danh sách đối số”: danh sách biến số biểu thức cách dấu phẩy (,) VD: -7, ‘a’, (a+b)*c, x… VD: sử dụng lệnh Write để in giá trị tương ứng biến a, b, c giá trị biểu thức (a+b)*c int a, b, c; a = 3; b = -5; c = 9; Console.Write("a = {0}, b = {1}, c = {2}, fx = {3}",a,b,c,(a+b)*c); Chú ý: Số lượng placeholder chuỗi định dạng với số lượng đối số danh sách đối số Giá trị số placeholder bắt đầu đánh số thứ tự từ Thứ tự đối số tương ứng với thứ tự placeholder * WriteLine: hàm thực in liệu chuyển trỏ đến dòng hình Console - Hàm nhập liệu (input): để nhập liệu cho ứng dụng Console sử dụng hàm sau: Read: hàm read cho phép đọc số nguyên từ vùng đệm bàn phím ứng dụng Console Hàm trả số nguyên Trang ReadKey: hàm cho phép đọc phím từ bàn phím ReadLine: hàm cho phép nhập chuỗi kí tự Một số hàm liên quan đến trình nhập liệu khác: Parse: hàm thực phân tích chuyển đổi kiểu liệu thành kiểu liệu khác VD1: để chuyển chuỗi kí tự thành số ngun dùng dịng lệnh int a; a = int.Parse(Console.ReadLine()); VD2: để chuyển chuỗi kí tự thành số thực decimal dùng dịng lệnh decimal n; n = decimal.Parse(Console.ReadLine()); Đối tượng Convert: đối tượng cho phép biến đổi kiểu liệu thành kiểu liệu khác Đối tượng chứa phương thức tĩnh tương ứng cho việc chuyển đổi kiểu liệu liệu sang kiểu liệu VD: để chuyển đổi sang số nguyên dùng hàm ToInt16, ToInt32, ToInt64, chuyển sang số thực dùng hàm ToFloat, ToDouble, ToDecimal… VD: a = Convert.ToInt32(Console.ReadLine()); Lệnh biểu thức - Định nghĩa: lệnh nhóm logic biến, tốn tử từ khóa để thực cơng việc cụ thể VD: lệnh để khai báo số thực PI có giá trị 3.14 const float PI = 3.14f; - Các lệnh C# kết thúc dấu chấm phẩy ( - Định nghĩa: khối lệnh (block) nhóm câu lệnh thực nhiệm vụ cụ thể Các khối lệnh nằm cặp dấu { } VD: khối lệnh tính diện tích hình trịn { float banKinh; float dienTich; Console.Write("Nhap ban kinh: "); banKinh = float.Parse(Console.ReadLine()); dienTich = banKinh * banKinh * Math.PI; Console.WriteLine("Dien tich: {0}", dienTich); Console.ReadLine(); } Các kiểu lệnh Có kiểu lệnh C#: Trang - Các lệnh lựa chọn (Selection Statements): lệnh tạo định đoạn mã lệnh có thực hay ko dựa vào điều kiện Một số lệnh thuộc nhóm này: if, switch - Các lệnh lặp (Iteration Statements): cấu trúc lệnh giúp thực lặp lặp lại đoạn mã lệnh thỏa mãn điều kiện Các lệnh thuộc nhóm này: for, foreach, do, while - Các lệnh nhảy (Jump Statements): lệnh giúp chuyển luồng thực chương trình (flow of program) từ đoạn mã lệnh sang đoạn mã lệnh khác Các lệnh thuộc nhóm này: break, continue, return, goto, default, yield - Các lệnh xử lý ngoại lệ (Exception Handling Statements): lệnh sử dụng để kiểm sốt tình ko mong muốn xảy ứng dụng làm cho ứng dụng hoạt động sai bị phá vỡ Các lệnh thuộc nhóm này: try, catch, finally, throw - Các lệnh kiểm tra ko kiểm tra (Checked and UnChecked Statements): lệnh ko kiểm tra lệnh bỏ qua trình quản lý code (CLR) lệnh kiểm tra lệnh kiểm soát CLR Và để lệnh kiểm tra ko kiểm tra sử dụng từ khóa tương ứng là: checked unchecked Mặc định lệnh thuộc nhóm checked - Các lệnh fixed: lệnh fixed sử dụng để cho GC (trình thu gom rác – Garbage Collector) bỏ qua việc thu hồi nhớ sử dụng đối tượng đoạn lệnh fixed Các từ sử dụng là: fixed unsafe - Các lệnh khóa (Lock Statements): lệnh giúp cho việc khóa đoạn code quan trọng để đảm bảo tiến trình (process) tuyến đoạn (thread) khác can thiệp vào nhớ mà sử dụng đoạn lệnh Các lệnh sử dụng để đảm bảo tính bảo mật hoạt động kiểu liệu tham chiếu Từ khóa sử dụng lock Các biểu thức - Biểu thức (expression) kết hợp toán tử (operators) toán hạng (operands) - Toán tử kí hiệu để thao tác liệu VD: + để thao tác tính tổng số… - Tốn hạng số, biến hàm VD: -7, x, Sin(PI/180)… - Một số VD biểu thức: x+y (x-y)/(x+y) Sin(x*x)/2+5*y - Để gán giá trị biểu thức vào biến sử dụng toán tử gán (assignment operator) Cú pháp: [tên biến] = [biểu thức]; Trang Các kiểu tốn tử Có kiểu toán tử: - Toán tử toán học (Arithmetic Operators): toán tử sử dụng để thực thao tác tính tốn tốn học ví dụ như: tính tổng, hiểu, tích, thương, lấy phần dư… Một số tốn tử tốn học: + : tính tổng - : tính hiệu * : tính tích / : tính thương % : lấy phần dư phép chia a cho b - : toán tử âm - Toán tử quan hệ (Relational Operators): toán tử sử dụng để kiểm tra mối quan hệ toán hạng > : kiểm tra lớn < : kiểm tra nhỏ = = : kiểm tra != : kiểm tra khác >= : kiểm tra lớn reference type: Boxing o Nếu chuyển kiểu liệu từ kiểu tham chiếu sang kiểu tham trị gọi UnBoxing Để thực UnBoxing phải ép kiểu VD: int n1 = -9; // value type object o1 = n1; // value type -> reference type: Boxing int n2 = (int)o1; // reference type -> value type: UnBoxing Chương : Các điều khiển Nội dung Giới thiệu Form Label TextBox Button Các thuộc tính chung Các kiện chung Điều khiển kiện bàn phím Điều khiển kiện chuột Các điều khiển khác Giới thiệu Một số điều kiển Form: Đối tượng cửa sổ chương trình chứa đối tượng khác Label: Đối tượng dùng để hiển thị văn hình ảnh (người dùng khơng sửa được) TextBox: Đối tượng dùng để hiển thị nhập liệu từ bàn phím Button: Là nút ấn cho phép Click để thực chức CheckBox: Đối tượng cho phép chọn không chọn Trang ListBox: Đối tượng cho phép xem chọn liệu từ dòng ComboBox: Đối tượng cho phép chọn liệu từ dòng GroupBox: Đối tượng chứa đối tượng khác Panel: Đối tượng chứa đối tượng khác Form Dùng để tạo giao diện cho chương trình Thêm Form Chọn Project ->Add Windows Form Chọn Windows Form -> gõ tên Form -> Add Các điều khiển Form Là thành phần đồ hoạ Label, TextBox, Mỗi điều khiển tạo đối tượng lớp Các đối tượng có thuộc tính, kiện phương thức riêng Properties: Các thuộc tính mơ tả đối tượng Methods: Các phương thức thực chức đối tượng Events: Các kiện sinh chuyển động bàn phím chuột, chi tiết người lập trình viết Các thuộc tính thường dùng AcceptButton: Nút click ấn phím Enter CancelButton: Nút click ấn phím Esc BackgroundImage: Ảnh Form Font: Font hiển thị Form Font ngầm định đối tượng Form FormBorderStyle: Kiểu đường viền Form None: Form khơng có đường viền Fix : Cố định kích thước chạy Form Sizeable: Có thể thay đổi kích thước Form Trang ForeColor: Màu chữ Form màu chữ đối tượng Form Text: Dòng văn hiển thị tiêu đề Form MaximizeBox: Có/khơng nút phóng to MinimizeBox: Có/khơng nút thu nhỏ StartPosition: Ví trí bắt đầu chạy Form CenterScreen: Nằm hình WindowState: Xác định trạng thái ban đầu Form Close: Đóng Form giải phóng tài nguyên Form đóng ko thể mở lại Hide: Ẩn Form khơng giải phóng tài nguyên Form Show: Hiển thị Form ẩn Load: Xảy chạy Form (ngầm định nháy đúp chuột chế độ thiết kế) FormClosing: Xảy đóng Form Ví dụ đặt thuộc tính Form         Tạo Form Gõ dòng tiêu đề Form Đặt Form chế độ FixDialog Cất nút phóng to Cất nút thu nhỏ Cho Form nằm hình Chèn ảnh làm Form Chạy Form Label Đối tượng hiển thị văn kết hợp hình ảnh, Ko sửa văn hiển thị Các thuộc tính thường dùng AutoSize: Tự thay đổi kích thước đối tượng Fonts: Font chữ đối tượng Label ForeColor: Màu chữ đối tượng Image: Ảnh đối tượng Text: Văn xuất đối tượng TextAlign: Lề văn TextBox Đối tượng dùng để nhập liệu từ bàn phím Các thuộc tính thường dùng Enabled: Có/khơng cho phép thao tác đối tượng Multiline: Có/khơng cho phép nhập liệu nhiều dòng (mặc định Ko) PasswordChar: Nhập ký tự làm mật ReadOnly: Có/khơng cho phép sửa liệu đối tượng (mặc định có) Text: Văn nhập (hiển thị) đối tượng Các kiện thường dùng TextChanged: Xảy nhập xoá ký tự (ngầm định nháy đúp Trang chuột chế độ thiết kế) KeyDown: Xảy ấn phím đối tượng KeyUp: Xảy thả phím ấn đối tượng Chú ý: Dữ liệu nhập vào TextBox văn thực phép tốn số học, logic cần chuyển sang kiểu số Button Đối tượng nút ấn cho phép thực chức Có thể hiển thị hình ảnh kết hợp với văn Các thuộc tính thường dùng Text: Văn hiển thị đối tượng Image: Hình ảnh hiển thị đối tượng Các kiện thường dùng Click: Xảy nhấn trỏ chuột gõ Enter đối tượng (ngầm định nháy đúp chuột chế độ thiết kế) Ví dụ Giải phương trình bậc Nhập hệ số a, hệ số b Chọn nút Kiểm tra liệu nhập? Nếu số? Chuyển thành số a, b ? Nếu a=0 Nếu b = -> Vô số nghiêm Nếu b != -> Vô nghiệm Nếu a !=0 -> x = -b/a Chuyển liệu từ xâu ký tự sang số Chuyển không kiểm tra liệu Sử dụng hàm Convert: = Convert.ToDouble(str) double a = Convert.ToDouble(“123.45”); Chuyển có kiểm tra liệu Sử dụng hàm TryParse kiểu liệu: bool IsNumber = double.TryParse(str, out num) IsNumber = true đổi IsNumber = false không đổi Chuyển liệu từ số sang xâu Sử dụng hàm Convert = Convert.ToString(num) string st = Convert.ToString(123); Sử dụng hàm ToString() đối tượng .Tostring() int a =2; string s = a.ToString(); Hàm Message Dùng để hiển thị thông báo Dùng để xác nhận hành động Trang 10 Chương ADO.NET Nội dung Các khái niệm Các đối tượng ADO.NET Xây dựng lớp truy nhập liệu I Các khái niệm ADO.NET công nghệ truy nhập liệu có cấu trúc Cung cấp giao diện hướng đối tượng hợp (Uniform object oriented) cho liệu khác - Cơ sở liệu quan hệ - XML - Các liệu khác Được thiết kế cho ứng dụng phân tán Web ADO.NET= ActiveX Data Objects Các đối tượng ADO.NETchứa không gian tênSystem.Data Các đối tượng ADO.NET chia thành loại - Connected: Các đối tượng truyền thông trực tiếp với sở liệu - Disconnected: Các đối tượng không truyền thông trực tiếp với sở liệu Các đối tượng DataSet: Một tập DataTable nhớ DataTable: Một bảng liệu nhớ DataRow: Một ghi DataTable DataColumn: Một cột liệu DataTable DataRelation: Đặt quan hệ DataTable DataViewManager: Tạo Views DataSet DataTable Có thể ánh xạ bảng vật lý với DataTable Một DataTable mảng chiều gồm dòng cột Một số thuộc tính Trang 34 - Columns: Các cột liệu DataTable + Count: Số cột DataTable - Rows: Các dòng liệu DataTable + Count: Số dịng DataTable Có thể tạo DataTable nhớ DataTablemyTable= new DataTable(); myTable.Columns.Add(“MaKhoa”, typeof(string)); myTable.Columns.Add(“TenKhoa”, typeof(string)); ADO.NET tổ chức thành mơ hình đối tượng System.Data System.Data.OleDb System.Data.Common System.Data.SqlClient System.Data.SqlTypes System.Data:Các lớp ADO.NET System.Data.OleDb:Các lớp làm việc với liệu OLEDB System.Data.SqlClient:Các lớp làm việc với cở sở liệu SQL Server II Các đối tượng ADO.NET Data Providers Là lớp truy nhập liệu nguồn: MicrosoftSQL Server™2000, SQL Server 7, Oracle, Microsoft Access Thiết lập kết nối DataSetsvà liệu nguồn Có thư viện ADO.NET Data Providers System.Data.OleDb: Dùng truy nhập sở liệu OLE System.Data.SqlClient: Truy nhập SQL Server SqlClient OleDb SqlCommand OleDbCommand SqlConnection OleDbConnection SqlDataReader OleDbDataReader SqlDataAdapter OleDbDataAdapter Đối tượng Connection Biểu diển kết nối tới sở liệu //Ket noi toi co so du lieu MS Access string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="; OleDbConnection myConnection= newOleDbConnection(conStr); myConnection.Open(); Trang 35 //Ket noi toi co so du lieu SQL Server String conStr = “DataSource = ;“+“Persist Security Info = true;“ +“Initial Catalog = ;“ +“User Id =name;Password=psw;” +“Connect Timeout = ”; SqlConnection myConnection= newSqlConnection(conStr); myConnection.Open(); Đối tượng DataAdapter Dùng để lấy liệu từ liệu nguồn vào DataSet Dùng để cập nhật liệu từ DataSet vào liệu nguồn OleDbDataAdapter làm việc với CSDL MS Access SqlDataAdapterlàm việc với liệu SQL Server Ví dụ phương thức Fill lấy liệu vào DataTable: sString conStr =“Data Source = may01;" +“Initial Catalog = QLSV;“ +“Persist Security Info = true;“ +“User Id =sa; Password=sa; Connect Timeout =50 ”; //Ket noi toi co so du lieu SqlConnection myConnection = new SqlConnection(conStr); myConnection.Open(); string sqlStr= “SELECT * FROM tblKhoaDaoTao”; SqlDataAdapter myDataAdapter= newSqlDataAdapter(sqlStr,myConnection); DataSet myDataSet= newDataSet(); myDataAdapter.Fill(myDataSet,”tblKhoaDaoTao”); DataTable myTable=myDataSet.Tables[“tblKhoaDaoTao”]; Ví dụ xây dựng form hiển thị liệu Trang 36 Mã code: private stringconStr = "Data Source = (local);" +"Initial Catalog = QLSinhVien;" +"persist security info = true;" +"User Id=sa; Password=sa; Connect Timeout =50"; private SqlConnection myConnection; private SqlDataAdapter myDataAdapter; privateDataSet myDataSet; privateDataTable myTable; private intpos = 0; private void frmDataTable_Load(objectsender, EventArgse) { myConnection = new SqlConnection(conStr); myConnection.Open(); string SqlStr = "SELECT * FROM tblKhoaDaoTao"; myDataAdapter = newSqlDataAdapter(SqlStr, conStr); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "tblKhoaDaoTao"); myTable = myDataSet.Tables["tblKhoaDaoTao"]; btnFirst.PerformClick(); } private void btnFirst_Click(objectsender, EventArgse) { if(myTable.Rows.Count == 0) return; pos = 0; txtMaKhoa.Text = myTable.Rows[pos]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[pos]["TenKhoa"].ToString(); } private void btnPrevious_Click(objectsender, EventArgse) { if(myTable.Rows.Count == 0) return; pos ; if (pos < 0) pos = 0; txtMaKhoa.Text = myTable.Rows[pos]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[pos]["TenKhoa"].ToString(); } private void btnNext_Click(objectsender, EventArgse) Trang 37 { if(myTable.Rows.Count == 0) return; pos++; if (pos > myTable.Rows.Count -1) pos = myTable.Rows.Count -1; txtMaKhoa.Text = myTable.Rows[pos]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[pos]["TenKhoa"].ToString(); } private void btnLast_Click(objectsender, EventArgse) { if(myTable.Rows.Count == 0) return; pos = myTable.Rows.Count -1; txtMaKhoa.Text = myTable.Rows[pos]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[pos]["TenKhoa"].ToString(); } Đối tượng DataGridView  Dùng để hiển thị liệu từ DataTable  Cách thực  Thêm đối tượng DataGridView vào Form  Nháy chuột phải chọn Add column Editcolumns  Lần lượt chọn Add để thêm cột  Mỗi cột cần khai báo thuộc tính  Name: Tên cột dùng mã lệnh  Header text: Tiêu đề hiển thị cột  DataPropertyName: Tên cột liệu DataTable  DataSource: Tên DataTable cần hiển thị lên lưới  AutoGenerateColumns: Tự động lấy cột true, ngược lại lấy số cột khai báo  dataGridView1.AutoGenerateColumns = false;  dataGridView1.DataSource = myTable;  AllowUserToAddRows: Cho/khơng thêm dịng lưới  AllowUserToDeleteRows: Cho/khơng xố dịng lưới  Sự kiện thường dùng  RowEnter: Xảy trỏ đưa vào dòng  e.RowIndex: Dòng thời  e.ColumnIndex: Cột thời Ví dụ: Trang 38 Hiển thị liệu bảng tblKhoaDaoTao lên lưới, chuyển trỏ lưới liệu hiển thị lên TextBox private string conStr = "Data Source = (local);" +"Initial Catalog = QLSinhVien;" +"persist security info = true;" +"User Id=sa; Password=sa; Connect Timeout =50"; private SqlDataAdapter myDataAdapter; private DataSet myDataSet; private DataTable myTable; private void frmDataGridView_Load(object sender, EventArgs e) { string SqlStr = "SELECT * FROM tblKhoaDaoTao"; myDataAdapter = new SqlDataAdapter(SqlStr, conStr); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet,"tblKhoaDaoTao"); myTable = myDataSet.Tables["tblKhoaDaoTao"]; //Chuyen len luoi dataGridView1.DataSource = myTable; dataGridView1.AutoGenerateColumns = false; } private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { try { int row = e.RowIndex; txtMaKhoa.Text = myTable.Rows[row]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[row]["TenKhoa"].ToString(); } catch(Exception e){} } Đối tượng SqlCommand Dùng để thực câu lệnh SQL: Insert; Update; Delete  Khai báo biến  Trang 39 private stringconStr =“Data Source = ;”; private SqlConnection myConnection; private SqlCommand myCommand;  Mở kết nối myConnection = newSqlConnection(conStr); myConnection.Open();  Thực câu lệnh SQL myCommand = newSqlCommand(sqlStr,myConnection); myCommand.ExecuteNonQuery();  Chú ý: sqlStr câu lệnh SQL  Thiết kế Form cho phép nhập, xoá bảng liệu tblKhoaDaoTao private string conStr = "Data Source = (local);" +"Initial Catalog = QLSinhVien;" +"persist security info = true;" +"User Id=sa; Password=sa; Connect Timeout =50"; private SqlDataAdapter myDataAdapter; private SqlCommand myCommand; private SqlConnection myConnection; private DataSet myDataSet; private DataTable myTable; public frmSqlCommand() { InitializeComponent(); } private void SetControls(bool edit) { txtMaKhoa.Enabled = edit; txtTenKhoa.Enabled = edit; btnAdd.Enabled = !edit; Trang 40 btnSave.Enabled = edit; } private void Display() { string SqlStr = "SELECT * FROM tblKhoaDaoTao"; myDataAdapter = new SqlDataAdapter(SqlStr, myConnection); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "tblKhoaDaoTao"); myTable = myDataSet.Tables["tblKhoaDaoTao"];//Chuyen len luoi dataGridView1.DataSource = myTable; dataGridView1.AutoGenerateColumns = false; } private void frmSqlCommand_Load(object sender, EventArgs e) {//Mo ket noi myConnection = new SqlConnection(conStr); myConnection.Open(); Display(); SetControls(false); } private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { try{ int row = e.RowIndex; txtMaKhoa.Text = myTable.Rows[row]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[row]["TenKhoa"].ToString(); } catch(Exception){} } private void btnAdd_Click(object sender, EventArgs e) { txtMaKhoa.Clear(); txtTenKhoa.Clear(); SetControls(true); txtMaKhoa.Focus(); } private void btnSave_Click(object sender, EventArgs e) { string sSql = "Insert Into tblKhoaDaoTao (MaKhoa, TenKhoa)"+"Values (N'"+ txtMaKhoa.Text + "',N'" + txtTenKhoa.Text + "')"; myCommand = new SqlCommand(sSql, myConnection); myCommand.ExecuteNonQuery(); Display(); SetControls(false); Trang 41 } private void btnDelete_Click(object sender, EventArgs e) { string sSql = "Delete From tblKhoaDaoTao " +"Where MaKhoa = N'" + txtMaKhoa.Text + "'"; myCommand = new SqlCommand(sSql, myConnection); myCommand.ExecuteNonQuery(); Display(); } Đối tượng SqlCommandBuilder  Tự động thực Update, Insert, Delete  Khai báo biến private string conStr = “Data Source = ;”; private SqlConnection myConnection; private SqlDataAdapter myDataAdapter; private SqlCommandBuilder myCommandBuilder; private DataSet myDataSet; private DataTable myTable; private string sqlStr;  Tạo kết nối tới sở liệu myConnection = new SqlConnection(conStr); //Tạo SqlDataAdapter myDataAdapter = new SqlDataAdapter(sqlStr, myConnection); //Tạo SqlCommandBuilder myCommandBuilder = newSqlCommandBuilder(myDataAdapter); //Tạo DataTable Trang 42 myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet,” ”); myTable = myDataSet.Tables[“ ”];  Xố dịng myTable.Rows[pos].Delete(); //pos dịng cần xố myDataAdapter.Update(myTable); //Thêm dịng DataRow newRow = myTable.NewRow(); newRow["MAKHOA"] = txtMakhoa.Text; newRow["TENKHOA"] = txtTen.Text; myTable.Rows.Add(newRow); myDataAdapter.Update(myTable);  Sửa dòng DataRow editRow =myTable.Rows[pos]; editRow["MAKHOA"] = txtMakhoa.Text; editRow["TENKHOA"] = txtTenkhoa.Text; myDataAdapter.Update(myTable); //Loại bỏ sửa đổi dòng myTable.RejectChanges(); //pos dòng cần sửa  Thiết kế Form cho phép nhập, xoá bảng liệu tblKhoaDaoTao private string conStr = "Data Source = (local);" +"Initial Catalog = QLSinhVien;" +"persist security info = true;" +"User Id=sa; Password=sa; Connect Timeout =50"; private SqlDataAdapter myDataAdapter; private SqlCommandBuilder myCommandBuilder; private SqlConnection myConnection; private DataSet myDataSet; private DataTable myTable; Trang 43 private void SetControls(bool edit) { txtMaKhoa.Enabled = edit; txtTenKhoa.Enabled = edit; btnAdd.Enabled = !edit; btnSave.Enabled = edit; } private void Display() { string SqlStr = "SELECT * FROM tblKhoaDaoTao"; myDataAdapter = new SqlDataAdapter(SqlStr, myConnection); myCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "tblKhoaDaoTao"); myTable = myDataSet.Tables["tblKhoaDaoTao"]; dataGridView1.DataSource = myTable; dataGridView1.AutoGenerateColumns = false; } private void frmCommandBuilder_Load(object sender, EventArgs e) { myConnection = new SqlConnection(conStr); myConnection.Open(); Display(); SetControls(false); } private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { try { int row = e.RowIndex; txtMaKhoa.Text = myTable.Rows[row]["MaKhoa"].ToString(); txtTenKhoa.Text = myTable.Rows[row]["TenKhoa"].ToString(); } catch (Exception){} } private void btnAdd_Click(object sender, EventArgs e) { txtMaKhoa.Clear(); txtTenKhoa.Clear(); SetControls(true); txtMaKhoa.Focus(); } private void btnSave_Click(object sender, EventArgs e) Trang 44 { DataRow newRow = myTable.NewRow(); newRow["MaKhoa"] = txtMaKhoa.Text; newRow["TenKhoa"] = txtTenKhoa.Text; myTable.Rows.Add(newRow); myDataAdapter.Update(myTable); SetControls(false); } private void btnDelete_Click(object sender, EventArgs e) { int pos = dataGridView1.CurrentRow.Index; myTable.Rows[pos].Delete(); } private void btnClose_Click(object sender, EventArgs e){this.Close();}  Bài tập: Thiết kế form  Đối tượng ListBox ComboBox        ListBoxes: Cho phép người dùng xem chọn dòng liệu từ danh sách ComboBox: Sự kết hợp TextBoxvà LixtBox DataSource: Nguồn liệu, DataTable DisplayMember: Cột hiển thị ListBox ValueMember: Cột giá trị trả chọn ListBox SelectedIndex: Dòng thời chọn SelectedValue: Giá trị chọn ListBox  Ví dụ hiển thị liệu tblKhoaDaoTao if(myTable.Rows.Count > 0) Trang 45 { comboBox1.DataSource = myTable; comboBox1.DisplayMember = “TenKhoa"; comboBox1.ValueMember = “MaKhoa"; comboBox1.SelectedIndex = 0; } Giá trị trả chọn là: comboBox1.SelectValue III Lớp truy nhập sở liệu  Mọi form không phụ thuộc vào sở liệu  Chỉ kết nối liệu lần chạy ứng dụng  Mỗi form sử dụng đối tượng lớp  Lấy liệu vào DataTable  Cập nhật liệu từ DataTabe vào sở liệu  Thực câu lệnh SQL thao tác với liệu  Mã nguồn: private static SqlConnection myConnection; private SqlDataAdapter myDataAdapter; public DataServices(){} ~DataServices(){} public bool OpenDB(string myComputer,string myDatabase,string myUser,string myPass) { string strConnection = "Data Source='" + myComputer + "';" +"Initial Catalog='" + myDatabase + "';"+"Persist Security Info=True;" +"User ID='" + myUser + "';Password='" +myPass + "';" +"Connect Timeout =120"; if ((myConnection != null) && (myConnection.State == ConnectionState.Open)) return true; try { myConnection = new SqlConnection(strConnection); myConnection.Open(); } catch (SqlException ex) { DisplayError(ex); myConnection = null; return false; } return true; } public void CloseDB( ) { if (myConnection != null) { if (myConnection.State == ConnectionState.Open) { try { myConnection.Close(); } catch (Exception){} Trang 46 myConnection = null; } } } private void DisplayError(SqlException ex){ string message; switch (ex.Number) { case 17: message = "Server không !"; break; case 4060: message = "Cơ sở liệu không !"; break; case 18456: message = "Không tên truy nhập mật !"; break; case 547: message = "Vi phạm khố ngồi !"; break; case 2627: case 2601: message = "Trùng giá trị trường khoá"; break; case 8152: message = "Dữ liệu nhập dài"; break; default: message = ex.Message; break; } MessageBox.Show(message,"Error " + ex.Number.ToString()); } public DataTable RunQuery(string QueryString, string TableName){ DataSet myDataSet = new DataSet(); myDataAdapter = new SqlDataAdapter(); try{ myDataAdapter.SelectCommand = new SqlCommand(QueryString, myConnection); SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myDataAdapter); if (TableName.Trim().Length > 0) myDataAdapter.Fill(myDataSet, TableName); else myDataAdapter.Fill(myDataSet); Trang 47 } catch (SqlException ex) { DisplayError(ex); return null; } return myDataSet.Tables[TableName]; } public void Update(DataTable myDataTable) { try{ myDataAdapter.Update(myDataTable); } catch (SqlException ex){ DisplayError(ex); } } public void ExecuteNonQuery(string cmdText) { SqlCommand myCommand = new SqlCommand(cmdText, myConnection); try{ myCommand.ExecuteNonQuery();} catch (SqlException ex){ DisplayError(ex); } } Trang 48 ... trịn { float banKinh; float dienTich; Console.Write("Nhap ban kinh: "); banKinh = float.Parse(Console.ReadLine()); dienTich = banKinh * banKinh * Math.PI; Console.WriteLine("Dien tich: {0}", dienTich);... + Value + " and reminder is = " + Remainder); Trang } II Các lệnh toán tử C# Vào liệu C# (trong môi trường Console) - C# hỗ trợ vào liệu môi trường Console thông qua đối tượng Console Đối tượng... Các lệnh C# kết thúc dấu chấm phẩy ( - Định nghĩa: khối lệnh (block) nhóm câu lệnh thực nhiệm vụ cụ thể Các khối lệnh nằm cặp dấu { } VD: khối lệnh tính diện tích hình trịn { float banKinh; float

Ngày đăng: 11/04/2021, 23:00

Xem thêm:

TỪ KHÓA LIÊN QUAN

w