[HỎI] Tìm kiếm trong cơ sở dữ liệu

Em có một table tên CHUONGTRINH trong đó có một cột là dùng để lưu tên các quốc gia (QUOCGIA), bây giờ người dùng muốn nhập mới ví dụ nhập : “Nhật Bản” thì làm sao để ta kiểm tra quốc gia “Nhật Bản” đã có trong CSDL hay chưa ?. Trước đó em dùng ExecuteScalar() thì chỉ tìm được một chữ ví dụ nhập: “Nhật” thì check được quốc gia Nhật này…Mong anh chị giúp đỡ

Bạn đã viết được câu SQL dùng cho việc tìm kiếm này hay chưa?

Mình đã viết như sau:

string quocgia = Convert.ToString(txtQuocGia.Text); // txtQuocGia là cái textBox để nhập tên quốc gia
string commandText = “select * from tblChuongTrinhMoi where QuocGia =” + “'” + quocgia + “'”;

        SqlCommand sqlCommand = new SqlCommand(commandText, sqlConnection);
        object obj = sqlCommand.ExecuteScalar();

        if (obj == null)
        {
              // Lưu quốc gia mới
         }
        else
             MessageBox.Show("Quốc gia đã tồn tại, mời bạn nhập quốc gia khác hoặc kết thúc", "Thông báo");

Cái này nó chỉ đúng nếu như quốc gia chỉ là một chữ như là: “Mỹ”, “Pháp”…còn nếu mà mình nhập Trung Quốc thì không kiểm tra được…hic (2 chữ là nó tìm không được) , giờ ko biết làm sao nữa :frowning:


Create PROCEDURE [dbo].[Search]
	@requestStr	nvarchar(64)
As
Begin
	set @requestStr='%'+@requestStr+'%';
	select *
	from
		Abc
	where
	        Country like REPLACE(@RequestStr,' ', '%')
end

Bạn có thể làm như trên, nó sẽ tìm những cái gần đúng nhất cho bạn.

[QUOTE=09520281;37238]Mình đã viết như sau:
Cái này nó chỉ đúng nếu như quốc gia chỉ là một chữ như là: “Mỹ”, “Pháp”…còn nếu mà mình nhập Trung Quốc thì không kiểm tra được…hic (2 chữ là nó tìm không được) , giờ ko biết làm sao nữa :([/QUOTE]
Nhìn thì đoán bạn viết bằng C#:
đầu tiên bạn dư *string quocgia = Convert.ToString(txtQuocGia.Text);*textbox.text là kiểu string rồi
tiếp theo khi dùng kiểu dữ liệu có dấu bạn phải chắc là dùng kiểu có nvarchar hoặc có chữ n trước, khi insert phải có chữ n trước như thế này INSERT INTO MONHOC VALUES (N’" + tbx_mamonhoc.Text + “‘,N’” + tbx_tenmonhoc.Text + “')”, khi truy vấn cũng phải thế SELECT SINHVIEN.TenSV
FROM HOCKY
WHERE (SINHVIEN.TenSV = N’nguyễn’)

cuối cùng là trọng tâm câu hỏi của bạn SELECT TenSV
FROM SINHVIEN
WHERE TenSV LIKE N’nguyễn%’

http://w3schools.com/sql/sql_like.asp
bạn xem rùi tham khảo

Bạn dùng “Like” thay “=” xem


string commandText = "SELECT COUNT(*) FROM tblChuongTrinhMoi WHERE QuocGia LIKE N'%" + txtQuocGia.Text + "%'";

SqlCommand sqlCommand = new SqlCommand(commandText, sqlConnection);
int count = sqlCommand.ExecuteScalar();

if (count==0)
{
       // Lưu quốc gia mới
}
else
       MessageBox.Show("Quốc gia đã tồn tại, mời bạn nhập quốc gia khác hoặc kết thúc", "Thông báo"); 

Thanks bạn QuyNam nhé, mình làm được rồi, và mình đính chính lại chút là chỗ

int count = sqlCommand.ExecuteScalar();

thì trong C# nó trả về kiểu object nên ta sẽ dùng là

object obj = sqlCommand.ExecuteScalar();

        if (obj == null)
        {
              // Lưu quốc gia mới
         }

:D, thanks anh chị đã quan tâm