C# 使用accdb检查Access中是否存在用户名失败
当我输入数据库中存在的值时,else总是发生,使用C# 使用accdb检查Access中是否存在用户名失败,c#,asp.net,sql,visual-web-developer,C#,Asp.net,Sql,Visual Web Developer,当我输入数据库中存在的值时,else总是发生,使用 String user = Request.Form["username"]; String Path = Server.MapPath("App_Data/Users.accdb"); String connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path; OleDbConnection conn = new OleDbConnecti
String user = Request.Form["username"];
String Path = Server.MapPath("App_Data/Users.accdb");
String connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path;
OleDbConnection conn = new OleDbConnection(connStr);
String sql = "SELECT * FROM Users WHERE UserName='" + user + "'";
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataReader myDataReader = cmd.ExecuteReader();
if (myDataReader.Read())
{
Response.Write("user exists");
conn.Close();
}
else
Response.Write("user does not exist");
conn.Close();
我在我的登录页面中使用它,它可以查看用户是否存在,我只是从中删除了密码部分
顺便说一下,这是我在这页上使用的表格
if (myDataReader.Read())
只是好奇而已
为什么不更改sql以返回一个值呢
<form method="get" action="profile.aspx">
<input type="text" name = "username" /><input type = "submit" value = "Search" />
</form>
仅供参考,我将使用User作为参数,而不是像那样构造字符串。远程调试,当您执行查询
SELECT*FROM Users
时,myDataReader包含哪些内容?变量User
的值是多少?尝试替换响应。使用响应写入。写入(“用户:“+user+”:不存在”)代码>我的一些表单使用了“method=get”,这是失败的原因,现在没事了,很抱歉误导您:SUnlike论坛网站,我们不使用“谢谢”或“感谢任何帮助”或签名。请参阅“-1:您知道SQL注入攻击,但您通过演示如何遭受此类攻击来回答。
String sql = string.Format(@" DECLARE @IsExists BIT
SET @IsExists = 0x0
SELECT @IsExists = 0x1 FROM Users WHERE UserName='{0}'
SELECT @IsExists as 'IsExists'
", user);
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
bool IsExists = Convert.ToBoolean(cmd.ExecuteScaler());
conn.Close();
return IsExists;