Gọi thực hiện thủ tục lưu trữ SQL trong ngôn ngữ lập trình
Execute SQL Stored Procedure in Programming Language
chuc.nv@due.edu.vn
Việc xây dựng các thủ tục lưu trữ (Stored Procedure – SP) trong SQL là yêu cầu thường xuyên để xử lý cơ sở dữ liệu. Bài viết này giới thiệu cách sử dụng (gọi) SP trong ngôn ngữ lập trình C#
Qui trình triển khai:
1. Tạo thủ tục lưu trữ trong SQL Server
Giả sử bảng khách hàng (CUSTOMERS) và Tài khoản (ACCOUNTS) có dữ liệu như sau:
Viết thủ tục lưu trữ có tên SP_LIST_BY_ADD(@CADD nvarchar(120))
Thủ tục này khi gọi sẽ truyền vào tham số là địa chỉ của khác hàng và liệt kê các khách hàng ở địa chỉ đó.
Xây dựng thủ tục SP_LIST_BY_ADD như sau:
2. Gọi thủ tục lưu trữ trong ngôn ngữ lập trình C#
Sau khi kiểm tra việc tạo và thực thi SP thành công trong SQL Server, giờ ta tạo một Project (để đơn giản, sử dụng winform) để gọi thực hiện thủ tục lưu trữ đã xây dựng và hiển thị kết quả thông qua dataGridView.
Mở MS Visual Studio, tạo một Project
Tạo một Form có các controls sau:
Textbox (name: textBox1): để nhập địa chỉ khách khách
Button (name: button1): để thực hiện lệnh, viết code cho event button_Click
dataGridView (name: dataGridview1): để hiển thị dữ liệu
Form Design như sau:
Code cho event button_Click như sau:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ExecuteSP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// tạo SQL string goi thu tuc da xay dung va truyen tham so la dia chi nhap vao trong textBox
string lSQLString = string.Format("execute SP_LIST_BY_ADD '{0}'", this.textBox1.Text);
// tao SQL command
System.Data.SqlClient.SqlCommand lCommand = new SqlCommand(lSQLString);
//tao connection
System.Data.SqlClient.SqlConnection lConnection = new SqlConnection("Server=chucnv-pc;Initial Catalog=atm;Integrated Security=false;User Id=chucnv;password=*****;Connect Timeout=30;");
//open connection
lConnection.Open();
//gan connection cho command
lCommand.Connection = lConnection;
//doc du lieu tu SQL
System.Data.SqlClient.SqlDataReader lDr = lCommand.ExecuteReader();
//tao DataTable
DataTable lTable = new DataTable();
//load du lieu tu DataReader -> DataTable
lTable.Load(lDr);
//gan datasource cho datagridview
this.dataGridView1.DataSource = lTable;
//Close connection
lConnection.Close();
}
}
}
Build và run Project, kết quả như sau: