30/09/2018, 18:48
Password and username trong c#
Mình đang ttajp viết chương trình mật khẩu. Mình viết thử cho username trước. Mình viết thế này, nó không báo lỗi nhưng không cho ra kết quả. Mình tìm mãi mà không biết chỗ sai. Mọi người giúp mình với ạ
for (i = 0; i <= ds.Rows.Count - 1; i++)
{
if (txtpassword.Text == ds.Rows[i].ItemArray[2].ToString())
MessageBox.Show("0k");
}
Bài liên quan
Chuỗi thì không nên dùng == để so sánh.
docs.microsoft.com
Nên dùng hàm Compare. Bạn tham khảo link
String.Compare Method (System)
Compares two specified objects and returns an integer that indicates their relative position in the sort order.
cảm ơn bạn nhiều nhá
mình chuyển về string.Compare thế này mà vẫn chưa được.Bạn có thể chỉ cho mình với
int result = string.Compare(txtpassword.Text,ds.Rows[i].ItemArray[2].ToString() );
Có thể up đoạn code lấy username lên từ database lên được không.
Không biết đoạn đó nên không thể hiểu được khúc sau bạn so sánh đúng không.
Tốt nhất là up từ đoạn lấy user từ database đến chỗ so sánh này.
string connetionString = null;
SqlConnection sqlCnn;
SqlCommand sqlCmd;
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable ds = new DataTable();
int i = 0;
string sql = null;
code của mình đây nhá. Bạn xem hộ mình với.
Dùng câu sql như vậy thì không biết cột nào là cột nào.
Bạn thử đặt debug khúc
Để xem giá trị của ds.Rows[i].ItemArray[2] có phải là password không ?
select *from passwordandusername là cái tên bảng mình tạo trong database mà, trong bảng này có cột password , hoten và username. và cái password nằm ở Item thứ 2
Vậy bạn debug xem có đúng là cột password không ?
Đúng là cột password bạn à.
Vậy mình không biết bị gì nữa rồi.
Bạn thử chạy debug để xem 2 giá trị txtpassword và ds.Row[i].ItemArray[2] có giống nhau không.
Chương trình của mình:
Nếu trong SQL server, bạn cho kiểu dữ liệu của cột password chứa một số phần tử nhất định, vd nvarchar[20] thì khi lưu từ trên chương trỉnh xuống database nó sẽ tự thêm khoảng trắng cho full 20 ký tự. Nên lúc lấy lên sẽ có khoảng trắng --> Không trùng khớp.
Trường hợp này mình dùng câu lệnh
select * from ... WHERE
trực tiếp xuống database luônbạn nói chuẩn quá, mình đã debug và thấy nó còn thừa nhiều ký tự trắng. Cảm ơn bạn nhiều nhá.
bạn ơi, bạn chỉ rõ cách khắc phục được không, mình đã thử nhưng vẫn chưa được
Thay vì bạn Select dữ liệu lên rồi mới so sánh tài khoản mật khẩu, thì bây giờ bạn dùng câu lệnh Select * from … WHERE password=… để lấy trưc tiếp lên luôn
lấy trực tiếp là sao bạn? mình lấy giá trị từ datatable để so sánh với txtpassword.Text mà
Simple Windows Form Login Application in C#
IT Tutorials with Example: In this Post, we will learn how to create a Simple Windows form Login application.
// tham khảo xem
cảm ơn bạn nhé, mẫu chốt vấn đề nằm ở khi mình khai báo theo varchar thì mình nhập bao nhiêu ký tự nó sẽ hiểu như thế