ASP NET SQL - select * from where author

Posted

技术标签:

【中文标题】ASP NET SQL - select * from where author【英文标题】: 【发布时间】:2017-04-01 20:39:30 【问题描述】:

我在显示来自 SQL 数据库的相同结果时遇到问题

"select * from Log where Author=" + User.Identity.Name

这是我尝试过的当前命令,但无法正常工作。

虽然这有效:

"select * from Log where Author='markus'"

感谢您的帮助。

【问题讨论】:

您需要在 SQL 语句中的值 User.Identity.Name 周围加上引号。 "select * from Log where Author='" + User.Identity.Name + "'" 我不建议这样做,但尝试将字符串包装成单引号:"select * from Log where Author='" + User.Identity.Name + "'"。这样做的标准方法是使用准备好的语句。 哦,当然,谢谢@SloanThrasher @LukeRemming 你听说过 SQL 注入,对吧?你不想成为那个让它发生的无用的编码器。这就是您使用这样的代码所允许的。除非您 100% 确定这些字符串的来源,否则切勿将字符串粘合在一起形成 sql 语句。您可以使用parameterized queries 轻松编写安全代码。如果你不这样做,你就是个傻瓜。真的。 【参考方案1】:

你可以像这样将字符串用单引号括起来:

"select * from Log where Author='" + User.Identity.Name + "'"

然而,这样做的标准方法是使用参数化语句:

"select * from Log where Author = @Author";

然后使用SqlParameter 将该值应用于参数@Author

有关详细信息,请参阅:

Why do we always prefer using parameters in SQL statements?

【讨论】:

不要这样做。 @GurV:您应该以“这就是 not 做你想做的事的方式”开头,或者将 SQL 注入的风险放在首位。寻求快速答案的人在看到您的解决方案“有效”时不会费心点击链接。【参考方案2】:

尝试以下方法:

"Select * from Log where Author='" + User.Identity.Name + "'" 

实际上,您的查询缺少字符串名称的单引号..

【讨论】:

说我的用户名是';drop table users;? @spender 其实'; drop table Log; -- 会更糟。【参考方案3】:

你也可以在这种情况下使用 string.Format 方法。 请尝试以下操作。

string query=string.Format("select * from Log where Author='0'",User.Identity.Name)

【讨论】:

以上是关于ASP NET SQL - select * from where author的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.NET SQL 数据源

asp.net 如何一次执行多条件Sql语句,如何解决?

SqlDataSource.Select()?我该如何使用它? (ASP.net)

asp.net中,多条件查询的sql语句怎么写?!

asp.net的sql问题

Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?