我是 Visual Studio 2010 的新手,我正在尝试创建一个登录表单。
我有这个代码。
OdbcConnection con = new OdbcConnection("host=localhost;usr=root;password=admin;db=timekeeping;");
OdbcCommand cmd = new OdbcCommand("SELECT * FROM receptionist WHERE username = '" + username_login.ToString() + "' AND password = '" + password_login.ToString() + "';");
cmd.Connection = con;
con.Open();
OdbcDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.GetString(0) != 1)
{ return false; }
else
{ return true; }
}
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
有错误,但我不知道那是什么问题。 这是一个屏幕截图:
希望有人能帮助我..
谢谢
最佳答案
您的代码容易受到 SQL Injection 的攻击.构建 SQL 查询时切勿使用字符串连接。改用参数化查询:
public bool IsValid(string username, string password)
{
using (var conn = new OdbcConnection("host=localhost;usr=root;password=admin;db=timekeeping;"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT count(*) FROM receptionist WHERE username = @username AND password = @password;";
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@password", password);
var count = (long)cmd.ExecuteScalar();
return count > 0;
}
}
然后像这样调用:
bool isValid = IsValid(username_login.ToString(), password_login.ToString());
此外,如果您使用的是 SQL Server,则最好使用 SqlConenction而不是 ODBC 驱动程序。
关于c# - 使用 Visual Studio 创建登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450168/