'/'应用程序中的服务器错误。关键字不受支持

时间:2013-08-06 05:49:01

标签: .net sql-server

我正在尝试连接数据库并一直在寻找解决此错误的方法

不支持关键字:

select first_name + ' ' + last_name as name
  ,position_descr
  ,staff_bio 
from dbo.staff_bios b
join dbo.staff_position_lk p
  on b.position_id= P.Staff_Position_ID
                        Where Staff_Bios_ID = @StaffBiosID
                          AND Effective_Date = (Select MAX(Effective_Date) 
                                               From EyeCareForYou.dbo.Staff_Bios
                       Where Staff_Bios_ID = @StaffBiosID)'.

描述:

  

在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:

  

System.ArgumentException:不支持关键字:'select first_name +''+ last_name作为名称                              ,position_descr                              ,staff_bio                              来自dbo.staff_bios b                              加入dbo.staff_position_lk p                              在b.position_id P.Staff_Position_ID上                               其中Staff_Bios_ID = @StaffBiosID                                 AND Effective_Date =(选择MAX(Effective_Date)                                                      来自EyeCareForYou.dbo.Staff_Bios                              其中Staff_Bios_ID = @StaffBiosID)'。

这是来自我的web.config

<appSettings>  
  <add key="SqlSelect" value="Data Source=mysource; Initial Catalog=EyeCareForYou; User ID=EyeCareForYou; Password='mypassword';" />
</appSettings>
<connectionStrings>
  <add name="SqlSelect" connectionString="Data Source=mysource; Initial Catalog=EyeCareForYou; User ID=myuserid; Password='mypassword';"/>
</connectionStrings>`

我尝试过很多东西。非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

请尝试以下操作:

  • 从查询末尾删除‘.;
  • 检查连接字符串 - 密码周围不需要引号;
  • as name更改为as [Name]

如需额外积分,请执行以下操作:

  • 从此部分EyeCareForYou.dbo.Stuff_Bios中删除数据库名称;
  • 限定列名称以使您的查询更具可读性。将first_name替换为b.first_name

最后两个不是必需的,但它们会使您的代码更清晰。 仅当您进行使用来自多个数据库的数据的查询时,才在查询中使用数据库名称。

如果这没有帮助,那么发布完整的.NET代码。

答案 1 :(得分:0)

您的SQL不完整,您缺少连接条件。它应该是: -

select first_name + ' ' + last_name as name
  ,position_descr
  ,staff_bio 
from dbo.staff_bios b
join dbo.staff_position_lk p
  on b.position_id=p.position_id

同时在网络配置中删除密码中的单引号: -

<appSettings>  
  <add key="SqlSelect" value="Data Source=mysource; Initial Catalog=EyeCareForYou; User ID=EyeCareForYou; Password=mypassword;" />
</appSettings>
<connectionStrings>
  <add name="SqlSelect" connectionString="Data Source=mysource; Initial Catalog=EyeCareForYou; User ID=myuserid; Password=mypassword;"/>
</connectionStrings>