2012-03-21 137 views
0

我正在使用MS ACCESS,我正在更改組合框的afterupdate事件中窗體的recordource。下面是使用這個sql語句有什麼問題?

Me.RecordSource = "SELECT * FROM qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION = " & Me.cboLocate.Value & ";" 

cboLocate SQL查詢的組合框的名稱和qryMIMATRIX是查詢的名稱。 上的更新後事件我提示輸入未desirable.Help我出去參數..

+0

我對我下面的SQL注入的評論相當嚴重的價值。正如你的問題所在,你將面臨嚴重的安全問題。默認情況下,組合框允許您手動輸入文本,而不僅僅是從列表中選擇。這意味着有人可以輸入類似...... somevalue; DROP TABLE等等等等...... – 2012-03-21 11:04:11

+0

將組合的「限制列表」屬性設置爲「是」可防止注入到RecordSource SQL語句中。但是,Access的數據庫引擎不容易受到DROP TABLE類型的注入攻擊,因爲它只能處理一條語句......你不能用分號連接2條語句,並期望引擎執行兩條語句。 – HansUp 2012-03-21 14:20:01

回答

1

如果a_loaction領域是你需要用引號包裹字符串值類型:

"SELECT * FROM qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION = '" & Me.cboLocate.Value & "'"

+0

很快就得到答案,真的。謝謝!我希望我能快速弄清楚這些事情。 – user1175126 2012-03-21 10:57:21

+0

這一個似乎沒有工作,我用了相同的邏輯:「SELECT * FROM qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION ='」&Me.cboLocate.Value&「'AND qryMIMATRIX.A_PRIORITY ='」&Me.cboPrior。值&「'」A_PRIORITY是整數,從1到5 – user1175126 2012-03-21 11:09:33

1

什麼查詢錯誤...

  1. 閱讀SQL注入...現在,我會等待。
    ...
    ...
  2. 不要選擇* .....不是一個好的做法,指定列。
  3. 你可能需要引用從下拉列表框
+0

對不起,我很無知,但是什麼是sql注入的全部?我想我需要google關於這個。我會檢查出來。截至目前,我認爲我可以將LimitToList屬性用於Yes,那樣會好嗎? – user1175126 2012-03-21 11:14:25

+1

是的,你應該閱讀它,這很重要。另外,它很容易修復。有數百篇(可能是1000篇)討論它的文章。這是一個很好的例子。 http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx – 2012-03-21 11:26:16

+0

Thanks.I'm去檢查,但我的查詢呢? – user1175126 2012-03-21 11:52:36