我有一个这样的示例表单:
我用select方法创建了dbconnect
类,它是这样的:
public List<string>[] Select(string username, string password)
{
string query = "SELECT * FROM ms_user where username = '" + username +
"' and password = '" + password + "'";
//Create a list to store the result
List<string>[] list = new List<string>[2];
list[0] = new List<string>();
list[1] = new List<string>();
//Open connection
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["username"] + "");
list[1].Add(dataReader["password"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
//return list to be displayed
return list;
}
else
{
return list;
}
}
如何使用此方法登录?由于该方法返回一个列表而不是true
或false
来检查数据库中是否存在该值。
答案 0 :(得分:1)
Boolean loginSuccessful = Select(username, password).Count > 0;
答案 1 :(得分:0)
我会在阅读器中添加一个变量,只要找到并匹配了用户帐户,该变量就会递增。
x int = 0;
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["username"] + "");
list[1].Add(dataReader["password"] + "");
x++;
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
//return list to be displayed
return x;
}
然后,在您的应用程序中使用一个控制结构,检查x&gt; 0.如果是,请登录用户。
答案 2 :(得分:0)
还有密码,哈希,加密和盐。
然后例外。
然后删除不适合输入语言的(+“”),并且大多数情况下表现不佳。
然后==真正的测试是坏的风格,多余。
答案 3 :(得分:0)
我认为不是直接回答你的问题(因为它是微不足道的 - 如果没有找到用户,你只返回null而不是List),你最好把更多的资源用于更多阅读材料。
如果您阅读一些关于SQL注入的内容,我认为您会特别受益: http://www.unixwiz.net/techtips/sql-injection.html
之后阅读以下教程 - 它非常好: http://zetcode.com/db/mysqlcsharptutorial/
最后,我建议至少在获得一些经验之前,在将值传递到SQL时,始终坚持使用MySqlParameter。在StackOverflow上查看这些问题 - &gt; Parameterized Query for MySQL with C#