Thực thi truy vấn.

Thực thi câu lệnh truy vấn.

Ở bài này, ta sẽ thử tiến hành đọc dữ liệu thông qua SqlCommand.

Để đọc dữ liệu từ SqlCommand, bạn chỉ cần một câu lệnh truy vấn và tiến hành thực thi câu lệnh truy vấn đó.

Ví dụ: đọc tất cả dữ liệu từ bảng Words trong database HocDaiDictionary.

Câu lệnh query: 

SELECT * FROM WORDS.

Ta thêm câu lệnh query trên vào SqlCommand đã được tạo.

command.CommandText = "SELECT * FROM WORDS";

Chạy câu lệnh Query bằng cách:

SqlDataReader reader = command.ExecuteReader();

Sau khi chạy ExcecuteReader() xong, kết quả của truy vấn sẽ được lưu vào một lớp là SQlDataReader, và ta có thể tiến hành đọc từ đầu đến cuối.

Kết quả câu lệnh truy vấn:

kết quả truy vấn

Như vậy ta biết, kết quả câu lệnh truy vấn là một bảng có 3 cột Id, Word và Meaning, ta sẽ lấy một kết quả tương tự trên C# thông qua SqlDataReader.

while(reader.Read())
{

    Console.WriteLine(reader["Word"] + ": "+reader["Meaning"]);

}

SqlDataReader tiến hành đọc dữ liệu theo trình tự từ trên xuống dưới, từng hàng một.
Lúc đầu, nó sẽ ở hàng thứ -1, nếu ta gọi reader.Read(), nó sẽ dịch lên 1 hàng là hàng 0. Nếu hàng này có dữ liệu, nó sẽ trả về true, ngược lại trả về false. Do vậy ta có thể dùng điều kiện while(reader.Read()) để đọc dữ liệu từ đầu đến cuối của câu lệnh Select.

Ta có thể truy cập dữ liệu đọc được ở từng hàng thông qua câu lệnh reader["Tên cột"].
Như bài toán trên, ta đã đọc dữ liệu từ cột Word và cột Meaning ra.

Sau khi đọc xong dữ liệu, ta tiến hành đóng kết nối.

reader.Close();
connection.Close();

Hàm Main lúc này:

static void Main(string[] args)
{
    SqlConnection connection = new SqlConnection(DBConnection.GetConnectionString());
    SqlCommand command = new SqlCommand();
    //nhận kết nối được tạo
    command.Connection = connection;
    //mở kết nối
    connection.Open();
    command.CommandText = "SELECT * FROM WORDS";
    SqlDataReader reader = command.ExecuteReader();
    while(reader.Read())
    {
        Console.WriteLine(reader["Word"] + ": "+reader["Meaning"]);
    }
    reader.Close();
    connection.Close();
    Console.ReadLine();
}

Kết quả: chương trình console hỗ trợ tiếng việt chưa tốt, tuy nhiên về cơ bản, ta đã thấy cách datareader hoạt động.

kết quả console


Hoàn thành:

Lúc này ta sẽ hoàn thành chương trình Console tra cứu từ điển. Lúc này chương trình sẽ có dạng.

Hỏi người dùng muốn tra từ không ? nếu muốn bấm một nút bất kì, nếu không bấm n và kết thúc chương trình.

Câu lệnh truy vấn tra cứu từ điển:

SELECT * FROM Words
WHERE WORD LIKE '%'+word+'%'

Với word là từ mà người dùng nhập vào.

Hàm Main:

static void Main(string[] args)
{
    string input = string.Empty;
    string word = string.Empty;
    while(input.ToLower() != "n")
    {
        Console.WriteLine("Nhap tu can tra cuu");
        word = Console.ReadLine();
        SqlConnection connection = new SqlConnection(DBConnection.GetConnectionString());
        SqlCommand command = new SqlCommand();
        //nhận kết nối được tạo
        command.Connection = connection;
        //mở kết nối
        connection.Open();
        command.CommandText = "SELECT * FROM WORDS WHERE Word like '%"+word+"%'";
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(reader["Word"] + ": " + reader["Meaning"]);
        }
        reader.Close();
        connection.Close();
        Console.WriteLine("Ban co muon tra tu nua khong?");
        Console.WriteLine("Ban mot phim bat ki de tiep tuc, bam phim n de ket thuc chuong trinh");
        input = Console.ReadLine();
    }
    Console.ReadLine();
}

 

Các môn học khác

Khóa học này cung cấp cho ta kiến thức nền tảng về công nghệ Blockchain, Bitcoin. Vì sao nó được gọi là công nghệ của tương lai, vì sao giá Bitcoin lại cao đến vậy. Làm sao để mua Bitcoin, ETH.

C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.

HTTP giúp kết nối các máy tính trên mạng Internet thông qua TCP/IP