public string checkUsername(string username, string password)
{
string result = "invalid username/password";
string connectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~\\myDB\\database.mdb");
string queryString = "SELECT * FROM Table WHERE [username]='" + username + "' AND [password]='" + password + "';";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = connection.CreateCommand();
command.CommandText = queryString;
OleDbDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
result = "";
}
}
finally
{
reader.Close();
connection.Close();
}
}
return result;
}
System.Data.OleDb.OleDbException:条件表达式中的数据类型不匹配。 指着这条线:
OleDbDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
想尝试:
cmd.Parameters.AddWithValue("@password", txtBoxPassword.Text);
但是" txtBoxPassword"在当前的背景下并不存在。
刚刚学习了几个月的c#,但仍然需要指导。
答案 0 :(得分:0)
您拥有SQL语句的方式,您可以完全开放SQL注入。它应该被参数化,因为你可以选择拍摄...把它作为你的陈述。
SELECT * FROM Table WHERE [username]=@parmUserName AND [password]=@parmPassword
然后,按照您的意愿添加您的参数,但为了理智,您也应该清理它们。这里,用户名,密码的入站参数不是查询的列名。您正在将这些VALUES设置为参数对象。
cmd.Parameters.AddWithValue ( "@parmUserName", username);
cmd.Parameters.AddWithValue ( "@parmPassword", password);