2014-03-19 33 views
-1
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:条件表达式中的数据类型不匹配。 指点解决此行:OleDbException:标准表达式中的数据类型不匹配该怎么办?

OleDbDataReader reader = command.ExecuteReader(); 
       try 
       { 
        while (reader.Read()) 

想尝试:

cmd.Parameters.AddWithValue("@password", txtBoxPassword.Text); 

但 “txtBoxPassword” 犯规存在于当前上下文。

刚刚学会了几个月的C#但仍需要指导。

回答

0

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

SELECT * FROM Table WHERE [username][email protected] AND [password][email protected] 

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

cmd.Parameters.AddWithValue ("@parmUserName", username); 
cmd.Parameters.AddWithValue ("@parmPassword", password); 
相关问题