2012-05-29 24 views
0

我有我的SqlCommand一切,我打开网页的问题,我得到的错误语法错误:SQLEXCEPTION在Asp.net - 近“范”

System.Data.SqlClient.SqlException: Incorrect syntax near 'Van'. 

我无法找到问题,因为“凡”只发现一旦整个项目,并在标题.. 这是我在Page_Load代码:

using (SqlConnection con = new SqlConnection(RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString"))) 
      { 
       var cmd = new SqlCommand("SELECT (SELECT Memo_ID, Dep_Name FROM Department WHERE (Department_ID = Staff.Depar_ID)) AS DepartmentName FROM Staff WHERE (FirstName + SPACE(1) + LastName = " + User.Identity.Name, con); 
       cmd.Connection.Open(); 
       var sqlReader = cmd.ExecuteReader(); 
       while (sqlReader.Read()) 
       { 

        String result = sqlReader.GetString(0); 
        DropDownList1.DataBind(); 
        DropDownList1.Items.FindByValue(result).Selected = true; 
        //Fill some data like : string result = sqlReader("SomeFieldName"); 
       } 
       sqlReader.Close(); 
       cmd.Connection.Close(); 
       cmd.Dispose(); 
      } 

数据库ConnectionString的是正确的,因为它适合我的所有其他网页...我试图让一个员工工作的部门,因此他/她只能从t中查看备忘录继承人自己的部门。

+0

。在你的选择查询的问题。放一个断点并复制查询并尝试在sql server查询浏览器中运行它 – Devjosh

+1

不要构建像这样的查询 - 您很容易受到SQL注入的影响。见[妈妈的漏洞](http://xkcd.com/327/) – Filburt

+0

对不起..我是一个正式的白痴..感谢您的帮助,它现在工作:)查询确实是错误的,我不会写我的问题就这样了! :) SORRY!但我只是测试它.. :) – Yunieke

回答

1

您需要在提供姓氏后关闭圆括号。

SELECT (SELECT Memo_ID, Dep_Name FROM Department 
WHERE (Department_ID = Staff.Depar_ID)) AS DepartmentName 
FROM Staff WHERE (FirstName + SPACE(1) + LastName = 'xxx') 

这是它应该是什么样子:

using (SqlConnection con = new SqlConnection(RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString"))) 
     { 
      var cmd = new SqlCommand("SELECT (SELECT Memo_ID, Dep_Name FROM Department WHERE (Department_ID = Staff.Depar_ID)) AS DepartmentName FROM Staff WHERE (FirstName + SPACE(1) + LastName = '" + User.Identity.Name + "')", con); 
      cmd.Connection.Open(); 
      var sqlReader = cmd.ExecuteReader(); 
      while (sqlReader.Read()) 
      { 

       String result = sqlReader.GetString(0); 
       DropDownList1.DataBind(); 
       DropDownList1.Items.FindByValue(result).Selected = true; 
       //Fill some data like : string result = sqlReader("SomeFieldName"); 
      } 
      sqlReader.Close(); 
      cmd.Connection.Close(); 
      cmd.Dispose(); 
+0

非常感谢你:)! – Yunieke

0

您需要引用姓氏。您可能也想要转换为参数化查询。

0

我会期待你的WHERE子句用引号括了User.Identity.Name

WHERE (FirstName + SPACE(1) + LastName = '" + User.Identity.Name + "'" ... 

可以“面包车”是在用户名?

这不是一个非常安全的查询要么 - 但SQL注入的另一个问题!

+0

我会照顾SQL注入,没问题;) – Yunieke

相关问题