【发布时间】:2021-06-17 03:14:22
【问题描述】:
我正在制作一个简单的登录系统,目前我正在制作一个方法来检查输入的用户名是否已经存在于数据库中,如果存在则返回 true,否则将返回 false。我目前尝试的代码只检查数据库中的第一行,如果我尝试在数据库中已经存在的第一行下方输入,它仍然会返回 false。我该怎么做才能解决这个问题
{
string conn = "URI=file:" + Application.dataPath + "/logindb.db";
IDbConnection dbconn;
dbconn = (IDbConnection) new SqliteConnection(conn);
dbconn.Open();
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT id,username, password " + "FROM user";
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32(0);
string usernames = reader.GetString(1);
string passwords = reader.GetString(2);
if(Username == usernames )
{
return true;
}
else
{
return false;
}
} ```
【问题讨论】:
-
从数据库中读取每条记录绝不是一个好主意(当有 10 个用户时效果很好,但如果有 10,000 个用户呢?)。尝试使用谷歌搜索 SQL WHERE。此外,如果您的系统是多用户系统,请考虑如果 2 个用户尝试同时创建同名帐户会发生什么情况,您的第一个用户的检查会通过,但在创建第二个帐户时会失败。您不应该创建自己的登录系统的原因有很多。
-
我确实理解这一点,但目的只是为了有 5 个用户,所以这应该不是问题