2013-02-08 66 views
0

可能是一個簡單的問題,但我很新的ASP.net和我不斷收到異常的SQL Server CE查詢例外

出現錯誤解析查詢。 [令牌行號= 1,令牌 行偏移= 142,令牌在錯誤=]

描述: 當前Web請求執行過程中發生了未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Data.SqlServerCe.SqlCeException:有 解析查詢時出錯。 [令牌行號= 1,令牌行偏移 = 142,令牌錯誤=]

所有我想要做的就是我的網格視圖只顯示效果類似於無論用戶將在文本框中。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string query = TextBox1.Text; 
    string sql = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [Date], [ID] FROM [TimeData]"; // this one works fine 

    string sql2 = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [ID], [Date] FROM [TimeData] WHERE ([Username] == '" +query + "'"; 
    Response.Write("done"); 
    SqlDataSource1.SelectCommand = sql2; 
} 

我使用的是從本地.SDF文件數據源。

在此先感謝

+1

您對SQL注入開放,所以您需要在第二個查詢中使用參數。關於SO的答案有很多。此外,您的查詢是錯誤的。你可以從你的'WHERE'子句中刪除'('''''''而不是'=='。 – MikeSmithDev 2013-02-08 20:42:58

+0

謝謝我會仔細研究一下如何更新gridview中的選定屬性。 – 2013-02-08 20:58:08

回答

3

你好像在SQL2

+0

是的,我必須刪除=並添加a)。我覺得很愚蠢。謝謝 – 2013-02-08 20:43:35

+0

-1。拋開SQL注入,你的答案不能解決他的查詢問題。 – MikeSmithDev 2013-02-08 20:44:05

2

末缺少一個右括號作爲@Adam指出你缺少一個右括號。另外,對於SQL,將「==」更改爲「=」。

但是,將用戶名(query var)直接添加到SQL中會將您的應用程序打開爲SQL injection攻擊。您應該使用SQL參數,請參閱http://www.dotnetperls.com/sqlparameter示例。