在asp.net中使用SQL查询中的变量(C#)
我有这个表单的SQL查询
string cmdText = "Select * from " + searchTable + "WHERE " + searchTable + "Name =' " + searchValue + "'"; 基本上我要做的是从数据库的Actors表中获取特定actor的信息.变量searchTable的值为’Actor’,即表名,searchValue具有actor的名称(由Actor表中的ActorName属性表示,这里我试图通过连接单词’Actor来形成属性的名称’和’姓名’) 所以,所有这些连接导致(或至少应该导致)对表单的查询: Select * from Actor where ActorName ='some actor'; 但是当我尝试运行它时,它在浏览器中给出了错误“语法不正确’=’”.有人可以帮忙吗? 解决方法
您可以将(并且应该!)参数放入SQL查询中以获取例如中的值.你的WHERE子句 – 但你不能参数化你的表名之类的东西.
所以我将该查询重写为: SELECT (list of columns) FROM dbo.Actor WHERE ActorName = @ActorName 然后传入@ActorName的值. 如果您需要为导演执行相同的操作,则必须进行第二次查询 SELECT (list of columns) FROM dbo.Directors WHERE DirectorName = @DirectorName 使用这样的参数 >增强安全性(禁止SQL注入攻击!) PS:您的设置中的原始问题是:在表名的第一个出现和WHERE子句之间没有任何空格 – 因此您将获得: SELECT * FROM ActorWHERE ActorName ='.....' 如果你真的坚持将你的SQL语句连接起来(我不推荐它!),那么你需要在你的表名和你的WHERE之间加一个空格! 更新:在ADO.NET中学习参数化查询的一些资源: > The C# Station ADO.NET Tutorial / Lesson 06: Adding Parameters to Commands (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 如何配置OData不处理Web Api中的非odat
- 是否可以从ASP.NET Web服务方法手动将HTTP代码40x发送到客户
- asp.net-mvc – HttpResponseMessage内容不会显示PDF
- asp.net – 让另一个程序员接管现有项目
- asp.net-mvc-3 – Visual studio web dev express挂起添加实
- asp.net-mvc-3 – 在同一父视图上多次使用一个部分视图
- asp.net-mvc-4 – 在Azure中部署时,在EF迁移中使用Update-D
- asp.net-mvc-2 – 什么时候使用View()与RedirectToAction
- 经典ASP:不支持Server.CreateObject
- asp.net – 错误:找不到此项目类型所基于的应用程序