Cách kết nối SQL Server trong C# Winforms – Freetuts

Trong bài viết này mình sẽ hướng dẫn những bạn cách kết nối SQL Server trong C # Winforms. Đây là bước tiên phong và quan trọng nhất khi những muốn thao tác được với SQL Server .

test php

banquyen png

Bài viết này được đăng tại

freetuts.net

, không được copy dưới mọi hình thức.

Mỗi loại cơ sở dữ liệu sẽ sử dụng một namespace tương ứng, trong trường hợp làm việc với CSDL SQL Server thì namespace là System.Data.SqlClient. Để kết nối tới SQL Server ta sử dụng đối tượng SqlConnection trong C#, đây là một class có trong namespace System.Data.SqlClient.

1. Kết nối CSDL với quyền chứng thực của Windows trong C#

Khi kết nối với CSDL SQL Server với quyền chứng thực của Windows thì chuỗi kết nối sẽ không tồn tại hai thuộc tính User Id và Password. Thay vào đó, chuỗi kết nối sẽ có thuộc tính Integrated Security = SSPI hoặc Integrated Security = True.

string _connectionString = "server=.; database=hoadon;integrated security=true";
//hoặc
string _connectionString = "server=.;database=hoadon;integrated security = SSPI";

Ngoài ra thuộc tính database còn hoàn toàn có thể sửa chữa thay thế bằng Initial Catalog. Sau đây là 1 số ít thuộc tính của chuỗi kết nối connectionString .

  • Data Source or Server: Tên máy chủ hay địa chỉ IP máy chủ nơi CSDL hoạt động.
  • Database or Initial Catalog: Tên của CSDL chúng ta muốn sử dụng.
  • Connection Timeout: Quy định thời gian chờ của ADO.NET cho kết nối thành công. Nếu quá thời gian này mà vẫn chưa kết nối được chúng ta sẽ nhận được thông báo lỗi ngoại lệ Connection Timeout.
  • Integrated Security=True or Integrated Security=SSPI: Nếu chúng ta muốn cơ chế đăng nhập SQL Server sử dụng quyền chứng thực của hệ điều hành Windows.

2. Kết nối CSDL với quyền chứng thực của SQL Server trong C#

Trong trường hợp chúng ta muốn kết nối với SQL Server bằng quyền chứng thực của SQL Server thì chỉ cần thay Integrated Security=True bằng hai thông số User IdPWD.

  • User Id: Tài khoản được tạo bởi SQL Server (giả sử là sa, đây là tài khoản cao nhất trong SQL Server)
  • PWD: Mật khẩu của tài khoản muốn kết nối (giả sử là bimat).

Ví dụ:

ConnetionString = "Server=.; Database=Student;Connection Timeout-60; User Id=sa;Password=pass";
//hoặc
ConnectionString = "Server=.;Database=Student;Connection Timeout=60;User Id=sa; PWD=pass";

*Lưu ý: Chuỗi kết nối (Connection) cần phải được mở trước khi thực hiện các thao tác với CSDL. Sau khi kết thúc thao tác với CSDL, thì cần phải đóng chuỗi chết nối để giải phóng tài nguyên cho hệ thống.

3. Tập tin lưu trữ chuỗi kết nối

Để cho phép người dùng hoàn toàn có thể thông số kỹ thuật giá trị cho những thuộc tính trong chuỗi kết nối cơ sở tài liệu, tất cả chúng ta hoàn toàn có thể sử dụng những loại định dạng file như : *. ini, *. txt. Tuy nhiên, khi thao tác với. NET, tất cả chúng ta hoàn toàn có thể sử dụng file App. config với cấu trúc nội dung được tổ chức triển khai theo dạng XML .

*Lưu ý: App.config là file có định dạng XML được giới thiệu từ phiên bản .NET 1.0. Nó cho phép chúng ta khai báo các tham số cùng với giá trị và các chỉ thị khác.

Ví dụ: Khi chúng ta kết nối SQL Server với file App.config.



 
 
 

Hoặc theo dạng như sau :



 
   
   
   
   
   
 

4. Mở và đóng chuỗi kết nối trong C#

Sau khi khai báo và khởi tạo đối tượng SqlConnection theo các cách ở trên, chúng ta sẽ thực hiện mở kết nối với CSDL bằng cách gọi phương thức Open().

SqlConnection.Open();

Chú ý: để kiểm tra tính hợp lệ của người dùng khi đăng nhập CSDL, chúng ta cần khai báo để mở CSDL với chuỗi kết nối theo hai quyền truy cập của Windows và SQL Server.

Sau khi mở kết nối và thao tác với CSDL xong thì tiến hành đóng kết nối bằng phương thức Close().

SqlConnection.Close();

Các bạn quan tâm chỉ mở chuỗi kết nối khi thiết yếu và đóng ngay nếu không sử dụng đến CSDL hoặc ngay sau khi hoàn tất thao tác với CSDL .

5. Ví dụ kết nối SQL Server trong C#

Trong ví dụ này mình sẽ triển khai tạo một Form giao diện với hai quyền truy vấn Windows và SQL Server. Sau đó giải quyết và xử lý một số ít sự kiện và công dụng của những tinh chỉnh và điều khiển trên Form. Ở những bài trước mình đã hướng dẫn về những điều khiển và tinh chỉnh trong Winforms, những bạn hoàn toàn có thể xem lại nhé .

bai1 06 png

Việc tiên phong tất cả chúng ta cần tạo Form giao diện như trên, sau đó đặt tên cho từng tinh chỉnh và điều khiển để dễ gọi trong khi viết code. Phần này mình đã hướng dẫn rất kỹ ở những bài trước, vậy nên mình sẽ không hướng dẫn đơn cử nữa. Các bạn hoàn toàn có thể xem lại tại đây .

Tạo User ID và Password trong SQL Server

Tiếp đến ta sẽ tạo User Id và Password cho quyền đăng nhập bằng SQL Server, đơn cử như sau :

Bước 1: Đăng nhập vào SQL Server.

Bước 2: Click chuột phải vào Logins và chọn New Login.

bai1 01 png

Sau khi chọn New Login, thì một hành lang cửa số mới hiện ra. Điền khá đầy đủ thông tin thiết yếu khi tạo User .

bai1 02 png

Bước 3: Chọn database mà User được truy cập đến, bằng cách Click chuột phải vào User vừa mới được tạo và chọn Properties.

bai1 03 png

Một hành lang cửa số mới hiện ra, khi đó ta chọn Database mà User này sẽ truy vấn trong mục User Mapping .

bai1 04 png

Bước 4: Cấp quyền User.

Ở đây mình chỉ sử dùng quyền Connect để demo mà thôi. Các bạn hoàn toàn có thể được cho phép những quyền khác nữa, tùy vào chức vụ của User. Các bạn sẽ Click chuột phải vào Tên Database muốn được cho phép kết nối và thao tác, sau đó chọn vào properties .

bai1 05 png

Tiếp đến sẽ chọn những quyền cho User này, ở đây mình chọn quyền truy vấn Connect trong mục Permissions .

bai1 09 png

Như vậy là tất cả chúng ta đã tạo xong User Id và Password trong SQL Server, giờ đây hoàn toàn có thể sử dụng thông tin tài khoản đó để đăng nhập từ C # rồi đấy .
Bây giờ sẽ giải quyết và xử lý sự kiện cho những tinh chỉnh và điều khiển, đơn cử là Button ” Connect ” và những RadioButton khi click vào để chọn chính sách truy vấn .

Xử lý sự kiện cho các RadioButton

Ta sẽ giải quyết và xử lý sự kiện khi người dùng Click vào RadioButton, đơn cử như sau :

  • Khi người dùng click vào RadioButton “Chứng thực bằng Windows”, thì ta sẽ hiện hai Textbox “Server” và “Database” cho người dùng điền. Còn hai Textbox “Tài khoản” và “Mật khẩu” sẽ ẩn đi dưới chế độ ReadOnly.
  • Khi người dùng click vào RadioButton “Chứng thực bằng SQL Server” thì ta sẽ hiện cả bốn TextBox cho người dùng điền vào.
private void rdbWindows_CheckedChanged(object sender, EventArgs e)
{
     txtTaiKhoan.ReadOnly = true;
     txtMatKhau.ReadOnly = true;
     txtTenDb.ReadOnly = false;
     txtTenServer.ReadOnly = false;
}

private void rdbSQL_CheckedChanged(object sender, EventArgs e)
{
     txtTaiKhoan.ReadOnly = false;
     txtMatKhau.ReadOnly = false;
     txtTenDb.ReadOnly = false;
     txtTenServer.ReadOnly = false;
}

Xử lý sự kiện cho button “Connect”

Ta sẽ giải quyết và xử lý sự kiện cho button ” Connect “. Nếu người dùng chọn quyền truy vấn bằng Windows thì ta tạo chuỗi kết nối bằng quyền truy tập Windows. trái lại nếu người dùng chọn vào quyền truy vấn SQL Server thì ta cũng sẽ tạo chuỗi kết nối bằng SQL Server với thông tin tài khoản và mật khẩu .

private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection conn = new SqlConnection();
                string connectionstring = "";
                if (rdbWindows.Checked == true)
                {
                    connectionstring = "server=" + txtTenServer.Text;
                    connectionstring += ";database=" + txtTenDb.Text;
                    connectionstring += ";integrated security=true";
                    conn.ConnectionString = connectionstring;
                }
                else
                {
                    connectionstring = "server=" + txtTenServer.Text;
                    connectionstring += ";database=" + txtTenDb.Text;
                    connectionstring += ";uid=" + txtTaiKhoan.Text;
                    connectionstring += ";pwd=" + txtMatKhau.Text;
                    conn.ConnectionString = connectionstring;
                }
                conn.Open();
                MessageBox.Show("ket noi thanh cong");
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Kết quả: khi người dùng nhập đúng các thông tin và chọn vào button “Connect”.

bai1 10 pngbai1 11 png

Code hoàn chỉnh kết nối SQL Server trong C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Connection_to_Database
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            rdbWindows.Checked = true;
            txtMatKhau.ReadOnly = true;
            txtTaiKhoan.ReadOnly = true;
        }

        private void rdbWindows_CheckedChanged(object sender, EventArgs e)
        {
            txtTaiKhoan.ReadOnly = true;
            txtMatKhau.ReadOnly = true;
            txtTenDb.ReadOnly = false;
            txtTenServer.ReadOnly = false;
        }

        private void rdbSQL_CheckedChanged(object sender, EventArgs e)
        {
            txtTaiKhoan.ReadOnly = false;
            txtMatKhau.ReadOnly = false;
            txtTenDb.ReadOnly = false;
            txtTenServer.ReadOnly = false;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            DialogResult dg = MessageBox.Show("Bạn có muốn thoát?", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if(dg == DialogResult.OK)
            {
                Application.Exit();
            }
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection conn = new SqlConnection();
                string connectionstring = "";
                if (rdbWindows.Checked == true)
                {
                    connectionstring = "server=" + txtTenServer.Text;
                    connectionstring += ";database=" + txtTenDb.Text;
                    connectionstring += ";integrated security=true";
                    conn.ConnectionString = connectionstring;
                }
                else
                {
                    connectionstring = "server=" + txtTenServer.Text;
                    connectionstring += ";database=" + txtTenDb.Text;
                    connectionstring += ";uid=" + txtTaiKhoan.Text;
                    connectionstring += ";pwd=" + txtMatKhau.Text;
                    conn.ConnectionString = connectionstring;
                }
                conn.Open();
                MessageBox.Show("ket noi thanh cong");
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
    }
}

Như vậy là tất cả chúng ta đã khám phá xong cách kết nối với SQL Server trong C # Winforms. Ở bài tiếp theo mình sẽ liên tục ra mắt cách tạo Form đăng nhập với những Account được tàng trữ trong SQL Server, những bạn quan tâm theo dõi nhé ! ! !