Gọi thực thi Stored Procedure
Trang 1HƯỚNG DẪN THỰC HÀNH TUẦN 9 Chủ đề: Gọi thực thi Stored Procedure
CSDL SQL Server
SQL
các câu lệnh SQL thông qua Stored Procedure
quả trả về (parameter input)
về (parameter output)
là QLHocSinh Tạo và thiết kế database mới gồm hai bảng như sau:
HOCSINH
6 MaLop Varchar(10) ForeignKey (tham chiếu đến
Lop(MaLop)
LOP
tạo trong tuần trước (CSDL QLHOCSINH.mdb)
Trang 2- Hướng dẫn cách import CSDL Access vào CSDL SQL Server:
mới với tên QLHocSinh
Import Data…
nguồn (dữ liệu nguồn ở đây là Access)
Trang 3o Chọn Next, Chọn đích import (đã được mặc định là SQL Server)
Trang 4o Chọn Next
CSDL SQL Server Sau đó chọn Next
Trang 53 Sử dụng lại ứng dụng trong tuần trước hoặc tạo ứng dụng mới:
phải khai báo namespace như sau:
using System.Data.SqlClient;
hiện các thao tác với CSDL SQL Server:
SqlConnection connection;
SqlDataAdapter adapter;
SqlCommand command = new SqlCommand();
gồm bốn thông tin: tên server, tên databse, userid và password
"server=dungta; database=QLHocSinh; user id=sa; password=" ;
a Thực hiện thêm mới thông tin một học sinh
insert như sau:
string sql = "INSERT INTO HOCSINH VALUES('"
txtMaHS.Text.Trim() + "', '"
+ txtTenHS.Text.Trim() + "', '"
+ dtNgaySinh.Value.ToString() + "', '"
+ txtDiaChi.Text.Trim() + "', "
+ txtDiemTB.Text.Trim() + ", '"
+ cboLop.SelectedValue + "')" ; command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
lệnh SQL ta thực hiện các bước sau:
tham số]
cho command
mỗi khi dùng command thực hiện câu lệnh
code trên bằng đoạn code như sau:
Trang 6command.Connection = connection;
command.CommandText = sql;
command.Parameters.AddWithValue( "@Ma" , txtMaHS.Text.Trim());
command.Parameters.AddWithValue( "@Ten" , txtTenHS.Text.Trim());
command.Parameters.AddWithValue( "@Ns" , dtNgaySinh.Value);
command.Parameters.AddWithValue( "@Dc" , txtDiaChi.Text.Trim());
command.Parameters.AddWithValue( "@Diem" , txtDiemTB.Text.Trim());
command.Parameters.AddWithValue( "@Lop" ,
cboLop.SelectedValue.ToString());
command.ExecuteNonQuery();
b Sửa thông tin của một học sinh
string sql = "UPDATE HOCSINH SET TenHS=@Ten, NgaySinh=@Ns,"
+ "DiaChi=@Dc, DTB=@Diem, MaLop=@Lop Where MaHS=@Ma" ; command.Connection = connection;
command.CommandText = sql;
command.Parameters.AddWithValue( "@Ma" ,txtMaHS.Text.Trim());
command.Parameters.AddWithValue( "@Ten" ,txtTenHS.Text.Trim());
command.Parameters.AddWithValue( "@Ns" ,dtNgaySinh.Value);
command.Parameters.AddWithValue( "@Dc" ,txtDiaChi.Text.Trim());
command.Parameters.AddWithValue( "@Diem" ,txtDiemTB.Text.Trim());
command.Parameters.AddWithValue( "@Lop" ,cboLop SelectedValue.ToString() ); command.ExecuteNonQuery();
a Cách tạo Stored Procedure
Stored Procedure…
Trang 7- Tạo Stored Procedure thêm mới thông tin một học sinh như sau:
Trang 8b Gọi thực thi Stored Procedure sp_InsertHocSinh thông qua chương trình:
chúng ta gọi thực thi Stored Procedure sp_InsertHocSinh như sau:
Các tham
số input
Kiểm tra học sinh cần thêm tồn tại chưa?
Trang 9- Sau khi thực thi, Stored Procedure sẽ trả về kết quả thông qua tham số out (kết quả trả về trong trường hợp này là chuỗi thông báo lỗi, nếu không có lỗi trả về chuỗi rỗng)
sinh mới có mã trùng với một học sinh đã được lưu trong cơ sở dữ liệu, khi thực hiện insert thì chương trình sẽ thông báo lỗi:
trả về và thông báo cho người dùng biết
năng còn lại của chương trình
trị ngày tháng được hệ thống hiểu mặt định là mm/dd/yyyy (nếu nhập theo định dạng dd/mm/yyyy, ví dụ: 25/10/1980 thì chương trình sẽ lỗi do không có tháng 25???) Sinh viên tìm hiểu và xử lý cho vấn đề trên Gợi ý: Trong Stored Procedure dùng hàm Convert để xử lý