OleDbException:条件表达式中的数据类型不匹配怎么办?

时间:2014-03-19 16:01:54

标签: c# oledb

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#,但仍然需要指导。

1 个答案:

答案 0 :(得分:0)

您拥有SQL语句的方式,您可以完全开放SQL注入。它应该被参数化,因为你可以选择拍摄...把它作为你的陈述。

SELECT * FROM Table WHERE [username]=@parmUserName AND [password]=@parmPassword

然后,按照您的意愿添加您的参数,但为了理智,您也应该清理它们。这里,用户名,密码的入站参数不是查询的列名。您正在将这些VALUES设置为参数对象。

cmd.Parameters.AddWithValue ( "@parmUserName", username);
cmd.Parameters.AddWithValue ( "@parmPassword", password);