Trang chủ

tự học winform C# qua ví dụ – ADO.NET

tự học winform C# qua ví dụ - ADO.NET

tự học winform C# qua ví dụ - ADO.NET

 

  1. 1.   Lược sử về truy cập dữ liệu

Trong thời đại thông tin hiện nay, CSDL là cái không thể thiếu được trong hầu hết các ứng dụng tin học. Tuy nhiên, CSDL là một công cụ lưu trữ và quản lý dữ liệu nó nằm riêng một phần khác nhau. Vì vậy, trong lập trình ứng dụng bằng bất kỳ ngôn ngữ gì mà muốn sử dụng được dữ liệu của một CSDL nào đó thì ta phải kết nối với CSDL đó. Và để có một sự dễ dàng cho giải pháp vấn đề này, các kỹ thuật truy cập dữ liệu lần lượt ra đời.

a)     ODBC.

ODBC được viết tắt bởi (Open Database Connectivity), được Microsoft và một số công ty khác phát triển vào đầu thập niên 90. Công nghệ này cung cấp một tầng truy cập dữ liệu chung, có thể được dùng để ruy cập hầu hết mọi hệ quản trị cơ sở dữ liệu quan hệ (relational database management system – RDBMS). Trong window, bạn có thể tạo các ODBC Connection bằng biểu tượng ODBC trong control panel.

 

a)     DAO

Một trong những vấn đề đối với ODBC đó là nó đã được thiết kết để dùng truy cập dữ liệu chung nên nó thường chạy chậm. Và Microsoft đã cho ra đời 1 kỹ thuật khác là DAO (Data Access Object). DAO đã cung cấp 1 mô hình đối tượng đơn giản để nói chuyện với Jet, một cấu hình CSDL của Microsoft Access. Do DAO đã được tối ưu hoá cho Access nên nó chạy rất nhanh. Nếu bạn sử dụng MS Access thì đây là công cụ truy cập nhanh nhất.

b)     RDO

Do DAO được tối ưu cho Access nên nó chỉ chạy tốt khi CSDL là Access và khi sử dụng nó để truy cập các CSDL khác thì nó chạy rất chậm. Để khắc phục điều này, Microsoft đã giới thiệu RDO (Remote Data Objects). RDO cung cấp mô hình đối tượng đơn giản như DAO, nhưng nó được thiết kế để kết nối với nhiều loại CSDL khác nhau.

c)      OLE DB

Đợt cải tổ lớn tiếp theo trong thế giới các công nghệ truy cập dữ liệu đó là sự ra đời của OLE DB. Về kiến trúc, OLE DB gần giống vói DAO và RDO, nhưng OLE DB còn có thêm một số các trình cung cấp dịch vụ hỗ trợ cho quá trình truy cập dữ liệu. OLE DB được thiết kể để có thể dùng truy cập bất kỳ CSDL nào, và cách này cho thấy những ưu điểm vượt trội so với các kỹ thuật trước. Hiện nay OLE DB cũng được áp dụng lại cho ADO .Net.

 

 

d)     ADO

ADO (ActiveX Data Objects) là công nghệ tiên tiến của Microsoft trong truy cập CSDL. ADO thật ra nó chính là 1 tầng mỏng nằm trên OLE DB nhưng nó lại có thêm một số các tiện ích hỗ trợ truy cập CSDL. ADO cho thấy nó thực sự là một công nghệ tốt nhất từ trước tới nay cho quá trình truy cập dữ liệu và hiện nay nó đã được thay đổi một số ít chức năng và trở thành ADO .Net.

  1. 2.   Giới thiệu về ADO .Net

Thế giới ngày càng có xu hướng sử dụng và xây dựng các ứng dụng internet trong một môi trường đa người dùng. Để hỗ trợ cho các nhà phát triển ứng dụng, Microsoft đã cho ra đời 1 công nghệ mới trong truy cập dữ liệu, đó là ADO .Net.

 

 

 

 

 

 

 

 

Bài 1

Lập trình phần mềm  Quản lý thông tin sách có thêm các chức năng thêm mới, xóa thông tin sách từ CSDL.

 

 

 

3

 

 

nh 1. ng dng khi load form.

 

Chức năng của ứng dụng được mô tả như sau:

 

  1. Khi load ứng dụng

 

  1. Hiển thị thông tin về tất cả các loại sách trong ứng dụng trên ListView

 

  1. Các TextBox đều bị vô hiệu hóa

 

  1. Button Thêm mới được kích hoạt cho phép thêm thông tin sá ch mới

 

  1. Button Lưu, Xóa, Bỏ qua bị vô hiệu hóa

 

  1. Khi một cuốn sách trên ListView được chọn

 

  1. Thông tin về cuốn sách được hiển thị trên các TextBox vẫn đang bị vô hiệu hóa

 

  1. Button Thêm mới, Xóa được kích hoạt

 

  1. Button Lưu, Bỏ qua bị vô hiệu hóa

 

 

 

 

 

4

 

 

nh 2. Form khi một item trên ListView được chọn .

 

  1. Khi button Thêm mới được nhấn

 

  1. Các TextBox được kích hoạt cho phép nhập thông tin

 

  1. Button Lưu được kích hoạt cho phép lưu thông tin

 

  1. Button Bỏ qua được kích hoạt cho phép bỏ qua thao tác Thêm mới

 

  1. Button Thêm mới, Xóa, bị vô hiệu hóa

 

  1. Khi button Xóa được nhấn

 

  1. Hiển thị thông báo hỏi người dùng có chắc chắn xóa không

 

  1. Xóa thông tin

 

 

 

 

u cầu: Thực hiện thao tác thêm hàng, xóa hàng trên DataSet, sau đó cập nhật lại CSDL

 

1. DATABASE

 

use master

go

drop database sachdb

go

 

CREATE DATABASE SachDB

go

use SachDB

go

create table categories

(

categoryid int identity(1,1) primary key,

categoryname varchar(50)

)

go

 

insert into categories(categoryname) values (‘Sách .net’)

go

insert into categories(categoryname) values (‘Sách java’)

go

CREATE TABLE [dbo].[Products](

[ProductCode] [char](10) NOT NULL PRIMARY KEY,

[Description] [varchar](50) NOT NULL,

[UnitPrice] [money] NOT NULL,

[OnHandQuantity] [int] NOT NULL,

categoryid int

constraint fk_c_p foreign key(categoryid) references categories(categoryid)

)

GO

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity],categoryid) VALUES (N’A3CS      ‘, N’Murach”s ASP.NET 3.5 Web Programming with C# 2008’, 54.5000, 4637,1)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity],categoryid) VALUES (N’A3VB      ‘, N’Murach”s ASP.NET 3.5 Web Programming with VB 2008’, 54.5000, 3974,1)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity],categoryid) VALUES (N’ADC3      ‘, N’Murach”s ADO.NET 3.5, LINQ, and EF with C# 2008’, 54.5000, 5244,2)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity],categoryid) VALUES (N’ADV3      ‘, N’Murach”s ADO.NET 3.5, LINQ, and EF with VB 2008’, 54.5000, 4538,2)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’CRFC      ‘, N’Murach”s CICS Desk Reference’, 50.0000, 1865)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’CSH8      ‘, N’Murach”s C# 2008’, 54.5000, 5136)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’DB1R      ‘, N’DB2 for the COBOL Programmer, Part 1 (2nd Edition)’, 42.0000, 4825)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’DB2R      ‘, N’DB2 for the COBOL Programmer, Part 2 (2nd Edition)’, 45.0000, 621)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’JSE6      ‘, N’Murach”s JAVA SE 6’, 52.5000, 3455)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’JSP2      ‘, N’Murach”s JAVA Servlets and JSP (2nd Edition)’, 52.5000, 4999)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’MCBL      ‘, N’Murach”s Structured COBOL’, 62.5000, 2386)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’MCCP      ‘, N’Murach”s CICS for the COBOL Programmer’, 54.0000, 2368)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’MDOM      ‘, N’Murach”s JavaScript and DOM Scripting’, 54.5000, 6937)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’SQL8      ‘, N’Murach”s SQL Server 2008’, 52.5000, 2465)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’VB08      ‘, N’Murach”s Visual Basic 2008’, 54.5000, 2193)

INSERT [dbo].[Products] ([ProductCode], [Description], [UnitPrice], [OnHandQuantity]) VALUES (N’ZJLR      ‘, N’Murach”s OS/390 and z/os JCL’, 62.5000, 677)

go

select * from categories

go

select * from products

go

 

2. CODING

 

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void load_data()

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlDataAdapter da = new SqlDataAdapter(“select * from products”,con);

DataTable tb = new DataTable();

da.Fill(tb);

dataGridView1.DataSource = tb;

 

//databinding

textBox1.DataBindings.Clear();

textBox2.DataBindings.Clear();

textBox3.DataBindings.Clear();

textBox4.DataBindings.Clear();

 

textBox1.DataBindings.Add(“Text”, dataGridView1.DataSource, “productcode”);

textBox2.DataBindings.Add(“Text”, dataGridView1.DataSource, “Description”);

textBox3.DataBindings.Add(“Text”, dataGridView1.DataSource, “UnitPrice”);

textBox4.DataBindings.Add(“Text”, dataGridView1.DataSource, “OnHandQuantity”);

 

 

}

private void Form1_Load(object sender, EventArgs e)

{

load_data();

textBox1.Enabled = false;

textBox2.Enabled = false;

textBox3.Enabled = false;

textBox4.Enabled = false;

 

button2.Enabled = false;

button3.Enabled = false;

button4.Enabled = false;

}

 

private void button1_Click(object sender, EventArgs e)

{

textBox1.Enabled = true;

 

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox1.Text = “”;

textBox2.Text = “”;

textBox3.Text = “”;

textBox4.Text = “”;

textBox1.Focus();

 

button1.Enabled = false;

button3.Enabled = false;

button2.Enabled = true;

button4.Enabled = true;

}

 

private void button2_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlCommand cmd = new SqlCommand(“insert into products values(‘” + textBox1.Text + “‘,'” + textBox2.Text + “‘,'” + textBox3.Text + “‘,'” + textBox4.Text + “‘)”, con);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

load_data();

}

 

private void button3_Click(object sender, EventArgs e)

{

DialogResult kq = MessageBox.Show(“ban muon xoa khong ?”,”tieu de”,MessageBoxButtons.YesNo);

 

if (kq == System.Windows.Forms.DialogResult.Yes)

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlCommand cmd = new SqlCommand(“delete from products where productcode = ‘”+textBox1.Text+”‘”, con);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

load_data();

}

}

 

private void button4_Click(object sender, EventArgs e)

{

 

}

 

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

{

button3.Enabled = true;

button4.Enabled = true;

}

 

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

dataGridView1_CellClick(sender, e);

}

}

 

 

 

 

 

 

Bài 2

Nâng cấp phần mềm Quản lý thông tin sách bằng cách thêm một bảng Category trên bảng

Product thêm 1 cột tên CategoryID  và liên kết hai bảng này như sau

 

 

7

 

 

 

 

8

 

 

 

 

Hãy lập trình để thực hiện sau

 

a. Đưa dữ liệu từ bảng Category vào Combobox tên là loại sách

 

b. Thực hiện chức năng nhập mới sách theo Category.

 

  1. c.  Hiển thị dữ liệu của bảng Product ra DataGridView

 

CODING :

 

 

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

 

private void load_data()

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlDataAdapter da = new SqlDataAdapter(“select * from products”, con);

DataTable tb = new DataTable();

da.Fill(tb);

dataGridView1.DataSource = tb;

 

//databinding

textBox1.DataBindings.Clear();

textBox2.DataBindings.Clear();

textBox3.DataBindings.Clear();

textBox4.DataBindings.Clear();

 

textBox1.DataBindings.Add(“Text”, dataGridView1.DataSource, “productcode”);

textBox2.DataBindings.Add(“Text”, dataGridView1.DataSource, “Description”);

textBox3.DataBindings.Add(“Text”, dataGridView1.DataSource, “UnitPrice”);

textBox4.DataBindings.Add(“Text”, dataGridView1.DataSource, “OnHandQuantity”);

 

 

 

}

private void Form2_Load(object sender, EventArgs e)

{

load_data();

textBox1.Enabled = false;

 

textBox2.Enabled = false;

textBox3.Enabled = false;

textBox4.Enabled = false;

 

button2.Enabled = false;

button3.Enabled = false;

button4.Enabled = false;

 

 

// load dữ liệu lên comboBox

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlDataAdapter da = new SqlDataAdapter(“select * from categories”, con);

DataTable tb = new DataTable();

da.Fill(tb);

comboBox1.DataSource = tb;

comboBox1.DisplayMember = “categoryname”;

comboBox1.ValueMember = “categoryid”;

 

}

 

private void button1_Click(object sender, EventArgs e)

{

textBox1.Enabled = true;

 

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

textBox1.Text = “”;

textBox2.Text = “”;

textBox3.Text = “”;

textBox4.Text = “”;

textBox1.Focus();

 

button1.Enabled = false;

button3.Enabled = false;

button2.Enabled = true;

button4.Enabled = true;

}

 

private void button2_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlCommand cmd = new SqlCommand(“insert into products values(‘” + textBox1.Text + “‘,'” + textBox2.Text + “‘,'” + textBox3.Text + “‘,'” + textBox4.Text + “‘,'”+comboBox1.SelectedValue.ToString()+”‘)”, con);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

load_data();

}

 

private void button3_Click(object sender, EventArgs e)

{

DialogResult kq = MessageBox.Show(“ban muon xoa khong ?”, “tieu de”, MessageBoxButtons.YesNo);

 

if (kq == System.Windows.Forms.DialogResult.Yes)

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

SqlCommand cmd = new SqlCommand(“delete from products where productcode = ‘” + textBox1.Text + “‘”, con);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

load_data();

}

}

 

private void button4_Click(object sender, EventArgs e)

{

 

}

 

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

{

button3.Enabled = true;

button4.Enabled = true;

}

 

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

dataGridView1_CellClick(sender, e);

}

 

private void button5_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

 

//MessageBox.Show(textBox1.Text);

//MessageBox.Show(textBox2.Text);

//MessageBox.Show(textBox3.Text);

//MessageBox.Show(textBox4.Text);

//MessageBox.Show(comboBox1.SelectedValue.ToString());

//string sql = “update products set description='” + textBox2.Text + “‘,unitprice='” + textBox3.Text + “‘,OnHandQuantity='”+textBox4.Text+”‘,categoryid='”+comboBox1.SelectedValue.ToString()+”‘  where productcode='”+textBox1.Text+”‘”;

//MessageBox.Show(sql);

SqlCommand cmd = new SqlCommand(“update products set description=@description,unitprice=@unitprice,OnHandQuantity=@onhandquantity,categoryid=@categoryid  where productcode=@productcode”, con);

cmd.Parameters.AddWithValue(“@description”, textBox2.Text);

cmd.Parameters.AddWithValue(“@unitprice”, textBox3.Text);

cmd.Parameters.AddWithValue(“@OnHandQuantity”, textBox4.Text);

cmd.Parameters.AddWithValue(“@categoryid”, comboBox1.SelectedValue.ToString());

cmd.Parameters.AddWithValue(“@productcode”, textBox1.Text);

con.Open();

cmd.ExecuteNonQuery();

con.Close();

load_data();

}

 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

//SqlConnection con = new SqlConnection(“server=.;database=sachdb;integrated security=true;”);

//SqlDataAdapter da = new SqlDataAdapter(“select * from products where  categoryid=@categoryid”, con);

//da.SelectCommand.Parameters.AddWithValue(“@categoryid”,comboBox1.SelectedValue);

//DataSet ds = new DataSet();

//da.Fill(ds);

//dataGridView1.DataSource = ds.Tables[0];

}

}

 

 

 

INFO24H.VN

 

Xem thêm:

Xem thêm

Thời trang

Xem thêm

Giảm cân

Mua bán inox, inox 304, inox 201
Xem thêm

Kiến thức y học

Xem thêm

Thông tin giáo dục

Link hữu ích
shop bán váy đầm công chúa đẹp tại TP.HCM
shop bán Thời trang trẻ em cao cấp giao hàng toàn cầu
mua mùn cưa
váy đầm trẻ em | váy đầm công chúa | Sở giáo dục Lâm Đồng 
 |  Thu mua phe lieu
shop bán đầm bé gái đẹp tại TP.HCM

Tuyển chuyên viên thiết kế và may đầm công chúa giỏi :