【发布时间】:2013-08-07 02:05:13
【问题描述】:
我在 Visual Studio 2012 的 ASP.NET C# 中使用选择查询编写了登录身份验证代码。部分代码是
String conn = "Data Source=Srinidhi-PC\\sqlexpress;Initial Catalog=model;Integrated Security=True";
SqlConnection con = new SqlConnection(conn);
con.Open();
String query ="select * FROM [original] WHERE firstname='" + TextBox1.Text + "' and password='" + TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(query,con);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows == true)
Response.Redirect("redirectpage.aspx");
else
Response.Write("Login Failure");
但每次,系统只响应“登录失败”。这里有什么问题?
ExecudeReader 返回符合条件的记录。就查询而言,我写它是为了练习。我将在我的原始代码中添加参数。
【问题讨论】:
-
你永远不应该使用内联 SQL,因为它会让你面临 SQL 注入攻击,并且还可能导致包含空格和/或无效字符的数据。试试
TextBox1.Text.Trim()和TextBox2.Text.Trim()看看是否有帮助。我假设original是您要从中选择的数据库表的实际名称。如果您硬编码其中的值,查询是否在 SQL Server 中工作? -
' 或 1=1 -- 这应该可以帮助您:)
-
(reader.HasRows == true)s 可以缩短为 (reader.HasRows)。你甚至不需要一个读者,只需要一个伯爵(星)。从 [original] 中的 select count(start) 开始
-
不,即使我对字符串中的值进行硬编码,查询也不会给我答案:(
-
但我的问题是没有(零)值,你得到什么吗?只是测试您是否正在打桌子并且桌子有任何值。只是来自 [original] 的 Select 星。
标签: c# asp.net .net sql-server