Tải bản đầy đủ (.doc) (43 trang)

PHẦN i: PROJECT và CONSOLE APPLICATION

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.09 MB, 43 trang )

Trường TC Kinh tế - Kỹ thuật Tây Ninh

PHẦN I: PROJECT VÀ CONSOLE APPLICATION
1. Khởi động:
Vào như hình vẽ sau:

Hoặc chọn biểu tượng trên desktop như sau:

2. Kết thúc:
Vào File/Exit hoặc nhấn nút X trên góc phải màn hình.
3. Tạo một Project mới trong Console:
Lập trình trực quan

1


Trường TC Kinh tế - Kỹ thuật Tây Ninh

Sau đó thực hiện như sau:

Tên console

Đia chỉ lưu

VD: Ta cho xuất hiện ra dòng thong báo: “CHAO MUNG BAN DEN VOI C#” tên project là
“BAITAP1”
namespace BAITAP1
{
class Program
{
static void Main(string[] args)


{
Console.Write("CHAO MUNG BAN DEN VOI C#");
Console.Read();
}
}
}
Để biên dịch chương trình ta thực hiện như sau:Menu Build/ Buid BAITAP1--> F5. Ta được
kết quả như sau:
Lập trình trực quan

2


Trường TC Kinh tế - Kỹ thuật Tây Ninh

Lưu ý: Trong C# có phân biệt chữ hoa và chữ thường vì thế trong câu lệnh
trên gõ sai write/read thì sẽ báo lỗi ngay.
Việc nhập xuất dữ liệu thông qua thiết bị nhập xuất chuẩn thể hiện bởi các phương thức của lớp
Console
- Phương thức Write(): để xấut dữ liệu ra, nếu chuỗi dung trong dấu nháy kép “”.
- Phương thức Read() hoặc ReadLine(): cuối chương trình. Nếu khơng có dịng này thì thấy
MH nháy lên rồi tắt khơng thấy kết quả, giống như getch() trong C và Readln trong Pascal
Vd2: Hãy viết console cho baitap2 kết quả hiện thị như sau:

Vd3: Hãy thực hiện và cho ra kết quả như sau:
Đường xa vạn dậm em ngồi
Nỗi đời xa vắng nỗi đời đắn đo
Em là nhật nguyệt từ đây
Tuổi mười chín mấy cũng phải phai người.
Em ơi hồng sẽ phai hồng

Đóa hoa đàm tiếu phiêu bồng nỗi đau
Hoa vàng một đóa lạ lung
Gió chiều tịch mịch sẽ trùng trùng xa
Em ơi tịch mịch bây giờ
Ấy là nhan sắc đâu ngờ mất nhau.
4. Cấu trúc điều khiển:
 Các kiểu dữ liệu:
Kiểu
Byte
Sbyte
Short
Ushort
Int
Uint
Long
Ulong
Char
Float
Double
Bool
String

Ý nghĩa
Số ngun khơng dấu 1byte 0-255
Số ngun có dấu -128 ->127
Số ngun có dấu 16bit -32768 ->32767
Số ngun khơng dấu 1bit 0 ->65535
Số ngun có dấu 32bit -231 ->-231-1
Số ngun khơng dấu 32 bit 0 ->232-1
Số nguyên có dấu 64bit -263 ->263-1

Số ngun khơng dấu 64 bit 0 ->264-1
Lưu các kí tự Unicode
Số thực 32 bit số có giá trị tuyệt đối lớn nhất là
3,4 x 1032, số dương nhỏ nhất là 1,5 x 1045
Số thự 64 bit
Nhận giá trị đúng (true), sai (false)
Chuỗi kí tự

 Các phép tốn số học: + - * / %
 Các phép toán tử: =, &&, ||, !
Lập trình trực quan

3


Trường TC Kinh tế - Kỹ thuật Tây Ninh
 Các phép toán so sánh: >,<,= =,<=,>=,!=
 Toán tử tăng giảm:++,-Thực hiện ví dụ dựa vào hai kết quả sau:

Kq=float.Parse()

a = int.Parse(Console.ReadLine());//chuyển giá trị nậhp vào giá trị số nguyên int
Hãy viết lại bài trên với kết quả như sau:

5. Một số cấu trúc:
If ….else
If else lồng nhau
Bài 1: Nhập 3 điểm: tốn(t), lí(l), hố(h) và điểm kết quả(kq): nếu kq=t+l+h thì xuất câu thơng báo
“Thí sinh nay dau vao DH
Khong can xet diem khong che”

Ngược lại xét các điều kiện sau: kq>=21 và (t>=7,h>=7) hiển thị câu thông báo : “Dau DH vi cac
mon tren 7 diem” ngược lại “Khong dau DH”
Switch ….case
Bài 2: Nhập vào số từ 1 ->12 và xuất ra tháng đó.
Bài 3: Nhập vào số và xuất ra tháng đó nếu số khơng có trong tháng thì hiện thong báo “Khơng có
tháng này”.
Vịng lập for
Bài 4: Nhập x số tự nhiên và tính tổng các số đó
While/do while
Thực hiện lại bài 4 theo cấu trúc while.

Lập trình trực quan

4


Trường TC Kinh tế - Kỹ thuật Tây Ninh

MẢNG TRONG C#
I. Mảng một chiều:
Khai báo:
int[] tên_mảng;
float[] tên_mảng;
Mảng trong C# được cấp phát bộ nhớ bằng tốn tử new.
Ví dụ: Nhập và xuất giá của mảng:
int[] a;
int i, n; //n=số phần tử của mảng
Console.Write("Nhap so phan tu cua mang:");
n = int.Parse(Console.ReadLine());
a = new int[n]; //mảng nhận số phần tử

//nhap mang
Console.Write("Nhap mang");
for (i = 0; i < n; i++)
{
Console.Write("a["+i+"]=");
a[i] = int.Parse(Console.ReadLine());
}
//xuất mảng
Console.Write("Xuat mang");
for (i = 0; i < n; i++)
{
Console.Write("a[" + i + "]=");
Console.WriteLine(a[i]);
}
Bài tập 1: Tính tổng các giá trị của mảng.
Bài tập 2: Tính tổng các giá trị của mảng tại các vị trí số chẳn.
Bài tập 3: Tổng các phần tử của mảng với các phần tử là số chẳn.
II. Mảng hai chiều:
Khai báo:
Kiểu dữ liệu [ , ] tên_mảng;
Vd: int [ , ] so;
Float[ , ] so;
Ví dụ 1: Nhập vào mảng có chiều dài và rộng là 3, 3.
int[,] a;
int i, j;
a = new int[3, 3];
Console.WriteLine("Nhap mang");
for(i=0;i<3;i++)
for (j = 0; j < 3; j++)
{

Console.Write("a[" + i + "," + j + "]=");
a[i, j] = int.Parse(Console.ReadLine());
}
Console.WriteLine("Xuat mang");
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
Lập trình trực quan

5


Trường TC Kinh tế - Kỹ thuật Tây Ninh
{
Console.Write(a[i,j]);
Console.Write(" ");
}
Console.ReadLine();
Bài tập 1: Nhập mảng 2 chiều với chiều dài và chiều rộng là hai giá trị tuỳ ý ta nhập vào từ bàn
phím.
Bài tập 2: Nhập vào mảng vng n và tính tổng giá trị của đường chéo chính.

Lập trình trực quan

6


Trường TC Kinh tế - Kỹ thuật Tây Ninh

LỚP VÀ ĐỐI TƯỢNG TRONG C#
Khái niệm:

Lớp trong lập trình hướng đối tượng dùng để mô tả dữ liệu và các thao tác của các đối tượng.
thành phần của lớp là các trường hay các thuộc tính. Các thao tác được gọi là các hàm hay các
phương thức.
Ví dụ: Tạo class hình trịn và các thac tác tính chu vi, diện tích hình chữ nhật.
Ta thực hiện như sau:
Tạo ra một Project mới “class_hinhtron”.
Click chuột phải tại Project chọn Add - Class

Đặt tên là c_Duongtron
Để tạo một lớp ta dung từ khoá “class” kế đến là tên class cần tạo “c_hinhtron”.
Trong lớp có nhiều câu lệnh ta dùng “{“ để làm dấu mở bao các câu lệnh, sau đó “}” để đóng các
câu lệnh lại.
Trong hình trịn ta khai báo các thuộc tính cần thiết như, số pi và bán kính để đáp ứng cho việc
tính chu vi và diện tích.
static double pi = 3.1416;
private double r;
Trong lớp c_Duongtron khai báo một phương thức (Hàm) có tên c_DuongTron với một tham số
là bán kính. Từ khố public để có gọi được từ bên ngoài lớp. Gán r bằng giá trị trong phương thức.
Đây là phương thức khởi tạo dữ liệu (contructor).
public c_DuongTron(double bk)
{
r = bk;
}
Trong lớp c_Duongtron khai báo một hàm có tên dientich(). Từ khoá public. Trả về giá trị là
diện tích của hình trịn là pi*r*r.
public double dientich()
{
return pi * r * r;
}
Trong lớp c_Duongtron khai báo một hàm có tên chuvi(). Từ khoá public. Trả về giá trị là chu vi

của hình trịn là 2*pi*r.
public double chuvi()
{
return 2 * pi * r;
}
Ta viết class c_DuongTron như sau:
Lập trình trực quan

7


Trường TC Kinh tế - Kỹ thuật Tây Ninh
class c_DuongTron
{
static double pi = 3.1416;
private double r;
//tính diện tích
public double dientich()
{
return pi * r * r;
}
//tính chu vi
public double chuvi()
{
return 2 * pi * r;
}
public c_DuongTron (double bk)
{
r = bk;
}

}
Ta viết chương trình cho hàm Main như sau:
static void Main(string[] args)
{
c_hinhtron dt = new c_hinhtron(3);
Console.WriteLine("chu vi hình trịn:"+dt.chuvi());
Console.WriteLine("Dien tich hình trịn:"+dt.dientich());
Console.ReadLine();
}
Ta cũng có thể nhập bán kính từ bàn phím như sau:
double bankinh;
Console.Write("Nhap Ban kinh:");
bankinh = double.Parse(Console.ReadLine());
c_hinhtron dt = new c_hinhtron(bankinh);
Console.WriteLine("chu vi hình trịn:" + dt.chuvi());
Console.WriteLine("Dien tich hình trịn:" + dt.dientich());
Tương tự ta tạo class hình chữ nhật và thực hiện tính chu vi và diện tích (hình chữ nhật có chiều
dài và chiều rộng).
Bài tập:
Tạo class tính tốn để thực hiện các phép tính: cộng, trừ, nhân, chia hai số thực.

Lập trình trực quan

8


Trường TC Kinh tế - Kỹ thuật Tây Ninh

PHẦN I: PROJECT, SOLUTION, WINDOWS FORMS.
I. Giới thiệu:

Windows Forms cho phép người lập trình sử dụng khơng gian tên System.Windows.Forms
Ứng dụng windows Forms để giao tiếp, nhập liệu, trình bày dữ lệu hay thực đơn.

II. Tollbar:

Khi là việc với Form, thanh công cụ thường được sử dụng. Thanh Tollbar được chia làm nhiều phần,
mỗi phần tương ứng với các điều khiển sau:
Common Controls: danh sách điều khiển thường sử dụng: Lable, Textbox, Button, Combobox,
ListView….
Menus and Tollbars: thiết kế thực đơn với nhiều hình thức khác nhau.
Containers: gồm các điều khiển chứa các điều khiển khác.
Data: gồm các điều khiển dùng để trình bày và thao tác trên cơ sở dữ liệu.

Lập trình trực quan

9


Trường TC Kinh tế - Kỹ thuật Tây Ninh
Bài tập:
1. Thiết kế form để tính tổng hai số như sau:

Lưu ý: chỉnh font thường cho các giá trị là 10
Thoát : Hiện câu thơng báo “Bạn thật sự muốn thốt hay khơng??”, chọn Yes thì thốt form,
chọn No khơng thốt.
2. Tương tự thực hiện sau:

Lập trình trực quan

10



Trường TC Kinh tế - Kỹ thuật Tây Ninh

FORM VÀ ĐỊNH DẠNG FORM
 Add thêm một form mới vào Solution

I. Các loại Form:
1. MDI Form (Form Chính):
Một Form được gọi là MDI Form khi thuộc tính IsMdiContainer là true. Ta khai báo trong lúc
thi hành hay thiết kế như sau:
Thi hành ta chọn

Lúc thiết kế thực hiện như sau:

Lập trình trực quan

11


Trường TC Kinh tế - Kỹ thuật Tây Ninh
Khi thuộc tính IsMdiContainner của Form từ false sang true thì lập tức màu nền Form chuyển
sang màu xám đen như hình sau:

Ta tiếp tục Add 4 Form vào Project và khai báo đoạn code sau cho button 2
private void btnForm2_Click(object sender, EventArgs e)
{
//Khai báo khởi tạo Form 2
Form frm = new Form2();
//Khai báo thuộc tính IsMdiContainer

frm.IsMdiContainer = true;
//Nạp form 2 lên màn hình
frm.Show();
}
2. Child Form:
Form dạng con là Form nằm bên trong vùng làm việc của MDI Form. Để một Form thành
Form con ta khai báo thuộc tính MdiParent ứng với MDi Form trong Project.
Ví dụ ta viết để mở Form 3 lên trong MDI Form như sau:
private void btnForm3_Click(object sender, EventArgs e)
{ //Khai báo khởi tạo Form 3
Form frm = new Form3();
//Khai báo MDI Form cho Form hiện hành
frm.MdiParent = this;
//Nạp Form 3 màn hình
frm.Show();
}

Lập trình trực quan

12


Trường TC Kinh tế - Kỹ thuật Tây Ninh

3. Normal Form:
Form mở ra không là MDIFrom và Child Form là Form thường. ta chỉ sử dụng phương thức
Show thì Form mở ra cho phép chuyển snag làm việc trên những form làm việc trước đó.
Ví dụ để mở Form4. như sau:
private void btnForm4_Click(object sender, EventArgs e)
{

//Khai báo khởi tạo Form 4
Form frm = new Form4();
//Nạp Form 4 màn hình
frm.Show();
}
Trong trường hợp sử dụng ShowDialog thì Form mở dạng Modal, khơng cho phép bạn chuyển
sang Form làm việc trước đó trừ khi Form được đóng lại.
Ví dụ:
private void btnForm5_Click(object sender, EventArgs e)
{
//Khai báo khởi tạo Form 4
Form frm = new Form5();
//Nạp Form 4 màn hình
frm.ShowDialog();
}
II. Thuộc tính của Form:

Name: đặt tên Form
Lập trình trực quan

13


Trường TC Kinh tế - Kỹ thuật Tây Ninh
Text: trình bày chuỗi trên thanh tiêu đề.
ShowIcon: mỗi Form khi nạp lên màn hình có biểu tượng mặc định góc trên bên trái của Form.
Biểu tượng này tuỳ thuộc vào tập tin hình ảnh mà bạn khai báo torn thuộc tính Icon. Trong trường
hợp không thể hiện biểu tượng này, bạn khai báo thuộc tính ShowIcon là false.
Icon: cho phép chỉ định tập tin hình ảnh để thể hiện trong phần biểu tượng của Form.
BackColor: màu nền của Form


ForeColor: Định dạng màu mặc định cho chuỗi các Control trên Form. Sau khi khai báo thuộc tính
này thì các điều khiển đưa vào Form sẽ có màu của Form.
StartPosition: vị trí hiển thị của Form trên màn hình. Nếu sử dụng phương thức Show để hiển thị
Form dạng ChildForm thì vị rí ChildForm nằm gọn trong vùng làm việc của MDIForm, nếu khơng
chỉ định thuộc tính này thì Form xuất hiện ngẫu nhiên trên màn hình nếu thuộc tính WindowState là
Normal.
WindowState: nạp lên màn hình ở 3 trạng thái: Normal (mặc định), Minimized hay Maximized.
Nếu Normal là đúng với kích thước bạn thiết kế.
IsMdiContainer: giá trị mặc định là false (Form bình thường), nếu muốn Form nạp lên màn hình là
MDIForm thì gán giá trị là true.
ControlBox: luôn tồn tại trên Form, khi bạn nhấn váo nút ở góc phải thì Form sẽ đóng lại. Trong
trường hợp khơgn muốn nút này hiển thị thì gán giá trị là False, lúc đó hai biểu tượng Minimized và
Maximized cũng bị che giấu.
III.CÁC ĐỊNH DẠNG CỦA FORM:
Form nạp lên dạng mặc định là hình chủ nhật. trong trường hợp nào đó chúng ta lại muốn
Form của mình có một hình dạng nào khác như: hình trịn, Elip…
Ta thực hiện ví dụ sau:

private void btnHinhtron_Click(object sender, EventArgs e)
Lập trình trực quan

14


Trường TC Kinh tế - Kỹ thuật Tây Ninh
{
//khai báo và khởi tạo frmCircle
Form frm = new frmCircle();
//khai báo và khởi tạo biến đối tượng Graphcs

GraphicsPath shape = new GraphicsPath();
//thiết lập hình là Elip dùng phương thức AddEllipse và kích thước theo Form1
shape.AddEllipse(15, 25, this.Width, this.Height);
//gán thuộc tính Region của Form bằng đối tượng GraphicsPath
frm.Region = new Region(shape);
frm.Show();
}
Trong đó:
Phương thức AddEllipse yêu cầu hai toạ độ điểm để vẽ hình (trong bài là x=15,y=25)
Sử dụng không gian chứa lớp GraphicsPath như sau:
using System.Drawing.Drawing2D;
Ví dụ: tạo thêm một button thứ 2 chon Form với nội dung sau:
private void btnCurve_Click(object sender, EventArgs e)
{
///khai báo và khởi tạo frmCurve
Form frm = new frmCurve();
//khai báo và khởi tạo biến đối tượng Graphcs
GraphicsPath shape = new GraphicsPath();
//khai báo và khởi tạo Point thứ 1
Point point1 = new Point(100, 50);
//khai báo và khởi tạo Point thứ 2
Point point2 = new Point(250, 100);
//khai báo và khởi tạo Point thứ 3
Point point3 = new Point(300, 200);
//khai báo và khởi tạo Point thứ 4
Point point4 = new Point(180, 300);
//khai báo và khởi tạo Point thứ 5
Point point5 = new Point(30, 150);
//khai báo và khởi tạo Point thứ 6
Point point6 = new Point(50, 100);

Point[] points = { point1, point2, point3, point4, point5, point6 };
//thiết lập hình là Elip dùng phương thức AddEllipse và kích thước theo Form1
shape.AddCurve(points);
//gán thuộc tính Region của Form bằng đối tượng GraphicsPath
frm.Region = new Region(shape);
frm.Show();
}
Sau đó nhận xét về hình dạng của Form.
IV. BIẾN CỐ CỦA FORM:
Sau khi tìm hiểu các thuộc tính của Form chúng ta đã thực hiện một vài đoạn chương trình
trong một biến cố Control và Form.
Form có nhiều biến cố như: FormClosed, FormClosing, Click,Load…..
Để xem biến cố (Event) của Form chọn bề mặt Form rồi kích hoạt cửa sổ Properties, chọn
biểu tượng
danh sách các biến cố của Form xuất hiện như hính dưới:

Lập trình trực quan

15


Trường TC Kinh tế - Kỹ thuật Tây Ninh

Khi xác định khai báo biến cố nào thì bạn double click vào biến cố đó thì khia báo lập tức
xuất hiện tương tự như ta chọn biến cố Load dưới.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DINHDANGFORM
{
public partial class frmCircle : Form
{
public frmCircle()
{
InitializeComponent();
}
private void frmCircle_Load(object sender, EventArgs e)
{
}
}
}
- Biến cố Load xảy ra khi Form hiển thị lần đầu tiên. Bạn có thể khai báo thực thi hay điền dữ
liệu vào các điều khiển trên Form bằng sự kiện này.
namespace DINHDANGFORM
{
public partial class frmLoad : Form
{
public frmLoad()
{
InitializeComponent();
}
private void frmLoad_Load(object sender, EventArgs e)
Lập trình trực quan

16



Trường TC Kinh tế - Kỹ thuật Tây Ninh
{
//Tên máy tính
txtComputerName.Text = SystemInformation.ComputerName;
//Tên tài khoản người sử dụng
txtUserName.Text = SystemInformation.UserName;
}
}
}
Ta có kết quả như sau:

- Biến cố Click: xảy ra khi người sử dụng nhấn chuột trên vùng làm việc của Form.
namespace DINHDANGFORM
{
public partial class frmLoad : Form
{
public frmLoad()
{
InitializeComponent();
}
private void frmLoad_Click(object sender, EventArgs e)
{
MessageBox.Show("Bạn đang click vào Form");
}
}
}
- Biến cố FormClosed: biến cố này xảy ra khi Form đã đóng , bằng cách sử dụng biến cố này
bạn có thể in ra lí do tại sao đóng Form.

private void frmLoad_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show(e.CloseReason.ToString());
}
- Biến cố FormClosing: xảy ra khi form đang đóng, bạn có thể sử dụng biến cố này để xác
nhận với người sử dụng chắc chắn đóng Form hay khơng, nếu bỏ việc đóng Form bạn gán
thuộc tính Cancel hay một thuộc tính nào phù hợp.
private void frmLoad_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Bạn chắc muốn thoát?", "C#", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning) == DialogResult.Cancel)
{
e.Cancel = true;
}
Lập trình trực quan

17


Trường TC Kinh tế - Kỹ thuật Tây Ninh
//người sử dụng nhấn nút Ok hay Enter Form sẽ đóng lại. trong trường hợp người sử dụng chọn nút
Cancel hay nhấn ECS thì khơng thay đổi.
Tương tự ta cũng có thể có đoạn code tương tự nhưng nhấn Yes hay Enter thì thốt, cịn No
thì khơng thốt.
DialogResult dr = MessageBox.Show("Bạn có muốn thốt khơng???", "THƠNG BÁO",
MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (dr == DialogResult.No)
{
e.Cancel = true;
}

Bạn nên dùng sự kiện này cho MDI Form dùng làm giao diện chính của chương trình.
- Biến cố KeyPress: xảy ra khi một phím được nhấn.
private void frmKeyPress_KeyPress(object sender, KeyPressEventArgs e)
{
//sử dụng thuộc tính Keychar của đối tượng e
lblKeyPress.Text = "Nhấn phím: " + e.KeyChar.ToString();
}
Khi thực thi chương trình, nếu bạn nhấn các phím ngoại trừ các phím chức năng thì giá trị ứng
với phím hiện lên màn hình.

-

Biến cố Resize: xảy ra khi kích thước Form thay đổi, bãn có dựa vào biến cố này để điều
chỉnh kích thước của các điều khiểntrên Form.
private void frmResize_Resize(object sender, EventArgs e)
{
//Điều chỉnh kích thước của điều khiển theo chiều rộng
rtxtbox.Width = this.Width - 100;
//Điều chỉnh kích thước của điều khiển theo chiều cao
rtxtbox.Height = this.Height -180;
}

Lập trình trực quan

18


Trường TC Kinh tế - Kỹ thuật Tây Ninh
V. Phương thức:
Có nhiều phươn gthức của lớp Form: Close; Hide;Activate, Show, ShowDialog. Sau các phương

thức phải có dấu “()” (cd: Close(); hay Hide() )
- Close: dùng để đóng Form, nếu Form là duy nhất thì chương trình tự động thốt.
- Hide: dùng để giấu Form đang mở.
- Activate: dùng để kích hoạt Form.
- Show: nạp Form lên màn hình.
- ShowDialog: nạp Form lên màn hình dạng Modal.

Lập trình trực quan

19


Trường TC Kinh tế - Kỹ thuật Tây Ninh

BÀI TẬP
1. Tính chu vi và diện tích đường trịn với bán kính nhập từ bàn phím sử dụng class:

Với bán kính nhập từ bàn phím
Nhấn nút “Tính” thì tính chu và diện tích của đường trịn.
2. Tính chu vi và điện tích Hình chữ nhật với chiều dài và chiều rộng nhập từ bàn phím sử dụng
class.

Lập trình trực quan

20


Trường TC Kinh tế - Kỹ thuật Tây Ninh

TRUY XUẤT DỮ LIỆU

I.
Tổng quan về ADO.Net:
Hai thành phần chính của ADO.Net là truy cập và thao tác dữ liệu:
Dựa trên Net Framework data providers: được thiết kế để đọc nhanh, chỉ đọc một chiều các dữ
liệu:
- Connection: Đối tượng cho phép kết nối dữ liệu: SQL Server, Oracle, ODBC, OLEDB,
MySQL.
- Command: Đối tượng cho phép truy cập dữ liệu và thực thi phát biểu SQL hay thủ tục nội tại,
truyền tham số và trả về dữ liệu.
- DataReader: Bộ đọc dung để đọc nhanh dữ liệu nguồn theo một chiều.
- DataAdapter: Cầu nối giữa đối tượng DataSet, DataTable với cơ sở dữ liệu nguồn.
Đối tượng DataSet: Trình bày dữ liệu của mọi cơ sở dữ liệu tuỳ vào trình điều khiển dùng để lưu trữ
DataTable, DataView.
II.
Đối tượng OledbConnection:
1. Giới thiệu đối tượng OledbConnection:
Khi làm việc với cơ sở dữ liệu Access sử dụng đối tượng kết nối là OleDbConnection thuộc
không gian System.Data.OleDb
Lưu ý: Để sử dụng đối tượng OleDbConnection trong Project tồn tại System.Data trong phần
Reference như hình dưới đây:

Để khai báo ta khai báo biến static trong lớp có thể là static, chẳng hạn khai báo biến
OleDbConnection có kiểu OleDbConnection như sau:
OleDbConnection constring = new OleDbConnection();
Ta khai báo kết nối với Access
//khai báo và khởi tạo đối tượng OleDbConnection
OleDbConnection constring = new OleDbConnection();
//khai báo chưỗi kết nối CSDL
constring.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data
Source=D:\QLSV.mdb";

//mở kết nối CSDL
constring.Open();
2. Kết nối CSDL Access:
- Để làm việc với Access cần khai báo không gian tên: using System.Data.OleDb;
- Khai báo đối tượng và khởi tạo đối tượng: OleDbConnection constring = new
OleDbConnection();
- Chuỗi kết nối Access: Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\QLSV.mdb;User
ID=Admin;Password=;
Lập trình trực quan

21


Trường TC Kinh tế - Kỹ thuật Tây Ninh
Trong đó: Provider là thuộc tính chỉ định trình điều khiển CSDL, Data Source là đường dẫn tập tin,
User ID và Password là tài khoản và mật khẩu người dùng.
Vd: ta kết nối CSDL với Access

-

private void button1_Click(object sender, EventArgs e)
{
try
{
//khai báo và khởi tạo đối tượng OleDbConnection
OleDbConnection constring = new OleDbConnection();
//khai báo chưỗi kết nối CSDL
constring.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data
Source=D:\QLSV.mdb";
//mở kết nối CSDL

constring.Open();
//đóng kết nối CSDL
constring.Close();
MessageBox.Show("kết nối thành cơng");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Khi thực thi chương trình nếu thành cơng sẽ xuất hiện thơng báo sau:

-

Cịn ngược lại thì lỗi phát sinh như sau:

-

Lưu ý: khi ta kết nối tự động thì ta chỉnh sửa lại một chút code như sau:

Lập trình trực quan

22


Trường TC Kinh tế - Kỹ thuật Tây Ninh
try
{
string dbpath = Application.StartupPath;
dbpath += "/qlsv.mdb";

string _connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=";
_connectString += dbpath;
//khai báo và khởi tạo đối tượng OleDbConnection
OleDbConnection constring = new OleDbConnection();
//khai báo chưỗi kết nối CSDL
//constring.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data
Source=D:\dung\QLSV.mdb";
constring.ConnectionString = _connectString;
//mở kết nối CSDL
……………
3.
Kết nối CSDL với SQL Server:
Tương tự Access ta khai báo đối tượng là using System.Data.OleDb thì làm việc trên mơi
trường SQL server ta khai báo using System.Data.SqlClient

Ta viết code cho nút button như sau:
try
{
//khai báo và khởi tạo đối tượng OleDbConnection
SqlConnection constring = new SqlConnection();
//khai báo chưỗi kết nối CSDL
constring.ConnectionString = "server=localhost;database=QLSV;Integrated
security=true";
//mở kết nối CSDL
constring.Open();
//đóng kết nối CSDL
constring.Close();
MessageBox.Show("kết nối thành cơng");
}
catch (Exception ex)

{
MessageBox.Show(ex.Message);
}

Lập trình trực quan

23


Trường TC Kinh tế - Kỹ thuật Tây Ninh

Bài tập:
Hãy thiết kế Form và sau đó thự hiện lấy danh sách khoa cho Combobox khoa.
Thêm một lớp mới vào cơ sở dữ liệu khi click nút “Tiếp nhận”.

Ta vào sự kiện Load của from ta viết code như sau:
private void frmTiepNhan_Load(object sender, EventArgs e)
{
//tạo chuỗi kết nối với SQLServer
string _connectString = "server=localhost;database=QLSV;Integrated security=true";
//khởi tạo đối tượng SqlConnection
SqlConnection con = new SqlConnection();
//nhận chuỗi kết nối
con.ConnectionString = _connectString;
//mở kết nối
con.Open();
//khởi tạo đối tượng SqlDataAdapter nhận đối tượng cần hiển thị và đối tượng kết nối
SqlDataAdapter adapter = new SqlDataAdapter("select * from khoa", con);
//nếu không nhận DataTable ta khai báo using System.Data;
DataTable dt = new DataTable();

adapter.Fill(dt);
//hiển thị Combobo khoa
cboKhoa.DisplayMember = "tenkh";
cboKhoa.ValueMember = "mskh";
cboKhoa.DataSource = dt;
con.Close();
}
Ta viết code nút “Tiếp nhận” khi tiếp nhận một giá trị mới.
private void btnTiepnhan_Click(object sender, EventArgs e)
{
string _connectString = "server=localhost;database=QLSV;Integrated security=true";
SqlConnection con = new SqlConnection();
con.ConnectionString = _connectString;
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter("select * from lop where 1=0", con);
DataTable dt = new DataTable();
adapter.Fill(dt);
//khởi tạo và gán cho một row mới
DataRow dr = dt.NewRow();
dr["mslop"] = txtMslop.Text;
Lập trình trực quan

24


Trường TC Kinh tế - Kỹ thuật Tây Ninh
dr["tenlop"] = txttenlop.Text;
dr["mskh"] = cboKhoa.SelectedValue.ToString();
//add vào
dt.Rows.Add(dr);

//xây dựng một đối tượng để cập nhật, thêm, xoá.
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(dt);
con.Close();
}
III.
Xây dựng lớp kết nối dung chung:
1. Xây dựng lớp kết nối cơ sở dữ liệu:
Tạo class DataServices
class DataServices
{
protected static String _constring = "server=localhost;database=QLLK;Integrated
security=true";
//dùng viết cho câu lệnh Select
public static DataTable ExecuteQuery(String sql)
{
DataTable dt = new DataTable();
SqlConnection connect = new SqlConnection(_constring);
connect.Open();
SqlCommand command = connect.CreateCommand();
command.CommandText = sql;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
adapter.Fill(dt);
connect.Close();
return dt;
}
// dùng viết cho câu lệnh insert, update, delete
public static int ExecuteNonQuery(String sql)
{

int n;
SqlConnection connect = new SqlConnection(_constring);
connect.Open();
SqlCommand command = connect.CreateCommand();
command.CommandText = sql;
n = command.ExecuteNonQuery();
connect.Close();
return n;
}
}
2. Xây dụng class để thực thi:
Để thực hiện cho bài tập form thêm Sinh viên ta cần 2 class như sau:
a. Tạo class c_Lop
class c_Lop
{
string _mslop;
string _tenlop;
Lập trình trực quan

25


×