VB5 與資料庫程式設計

每週一問: 挑戰您的 VB 功力 (資料庫篇, 98/02/22)


Q: 有一 Select SQL 如下:

    Select * From House Where room = 'Child's room' (Child's 含有單引號)

想將此一 Select 指令設定給 Data1.RecordSource, 程式該怎麼寫?

    Data1.RecordSource = "Select * From House Where room = 'Child's room'"
    (這麼寫是錯誤的)

A: 在 SQL 裡面, 用來框住字串的符號除了單引號之外, 雙引號也是正確的,舉例來說以下兩個 SQL 指令的意義是相同的:

    Select * From Stock Where ID='台積電'

    Select * From Stock Where ID="台積電"

但由於 VB 的字串是以雙引號框住的, 所以我們習慣以單引號來框住 SQL 的字串,例如:

    Data1.RecordSource = "Select * From Stock Where ID='台積電'"

但是在本問題中, 由於 Child's 含有單引號, 所以 'Child's room' 反而會造成資料庫的混淆, 因此應該寫成「"Child's room"」, 然後再放到 VB 的雙引號裡面, 直接反應的寫法是:

    Data1.RecordSource = "Select * From House Where room = "Child's room""
    (這還是錯誤的)

但由於雙引號( "" )之中有含有雙引號("), 所以正確的寫法應該修正為:

    Data1.RecordSource = "Select * From House Where room = ""Child's room"""
    (終於正確了)