2015-09-18 42 views
1

我正在編寫代碼並獲取語法錯誤,我不知道從哪裏來。這是我使用的代碼:在C#中的查詢表達式中獲取語法錯誤(缺少運算符)

string u = "select uniqcode from login where users='" + textBoxX1.Text + "' "; 

,這是我得到的錯誤:從登錄

「語法錯誤(缺少操作員)在查詢表達式'選擇uniqcode ,用戶= 'someuser'''。「 (System.Data.OleDb.OleDbException)引發了System.Data.OleDb.OleDbException :「查詢表達式 '中的語法錯誤(缺少運算符)'從登錄處選擇uniqcode where users ='someuser'''。」

+13

你應該綁定參數而不是將SQL字符串,因爲用戶可以在文本框某物像''寫; DROP TABLE ...; - ' – lad2025

+0

爲什麼列'用戶'複數?你存儲多個用戶逗號分隔嗎? –

+0

你是什麼意思?你能否詳細說明一下?! – Afshin

回答

0
string u = "select login.uniqcode from [login] where users='" + textBoxX1.Text.Trim() + "'"; 
+2

嘗試谷歌SQL注入和SQL參數 –

+0

仍然是相同的錯誤語法錯誤(缺少運算符)在查詢表達式中''從[登錄]選擇login.uniqcode where users ='someuser'''。'}' – Afshin

+0

@AfshinHaghighat如果您將發佈完整的代碼,那麼將很容易找出問題。 –

1

這可能是可能的,文本框的文本包含單引號(')。如果是,則用兩個單引號('')替換單引號(')

否則,嘗試使用sql參數執行它。

+1

不,它的文本框的值不包含任何引用,你可以從OP的描述中看到:'從login那裏選擇uniqcode where users ='someuser''。引號是查詢的一部分... 我認爲這應該是一個評論而不是答案,因爲它不會幫助OP。你告訴他使用SQL參數;然後展示一個簡短的例子,因爲他顯然不知道如何使用它們。 – khlr

0

由於您的錯誤表示您正在使用OleDb連接,因此您可以使用以下代碼。這也將避免SQL Injection。但是,您可能需要花費一點時間才能完成代碼。

u = "select uniqcode from login where users=?"; 

u.Parameters.Add("@users", OleDbType.VarChar).value = textBoxX1.Text; 

您可能會看到的例子herehere

+0

錯誤1'字符串'不包含'參數'的定義,並且沒有擴展方法'參數'接受類型'字符串'的第一個參數可以被發現 – Afshin

+0

@AfshinHaghighat Ofcourse它不起作用。我也寫過,你需要使用我的代碼和評論部分..我要求你展示更多的代碼,以便我們能夠幫助你。你可以在這一行顯示更多的代碼嗎? –

相關問題