2016-02-04 79 views
0

我嘗試搜索查詢以返回存儲在數據庫中的用戶名。但是,到目前爲止,我無法得到答案。所以在這裏,我正在尋求你的幫助。LIKE運算符的查詢字符串生成器

我有一個MFC對話框,其中我有一個編輯控件來輸入用戶名和搜索按鈕,用於查詢數據庫的數據。我必須只檢索那些與dit控件中的字符串匹配的用戶名。

比方說,有兩個用戶名爲SagarSachin的記錄。因此,如果我只在用戶名編輯控件中輸入"s",則搜索按鈕事件應檢索Sagar以及sachin的數據。

幸運的是,我有訪問數據庫中運行良好的查詢,但不知道如何在MFC應用程序中構建和格式化查詢。查詢,我可以在Access數據庫運行是:

​​

請幫我建立和格式化對話框的MFC應用程序中的查詢上單擊搜索按鈕。

下面是代碼:

list<CUserProperties> CUserOperations::SearchUserDetails(CString sUserName, CString sLastName) 
{ 
    list<CUserProperties> listUserProps; 

    m_sFunctionName = L"SearchUserDetails"; 

    try 
    { 
     if (sUserName.Trim().IsEmpty() && sLastName.Trim().IsEmpty()) 
     { 
      m_sQuery.Format(_T("SELECT USER_ID, USERNAME, ROLE, FIRSTNAME, LASTNAME, PASSWORD, CONFIRMPASSWORD FROM USERINFO")); 
     } 
     else if (sUserName.Trim().IsEmpty() && (!(sLastName.Trim().IsEmpty()))) 
     { 
      m_sQuery.Format(_T("SELECT USER_ID, USERNAME, ROLE, FIRSTNAME, LASTNAME, PASSWORD, CONFIRMPASSWORD FROM USERINFO WHERE LASTNAME = '%s'"), sLastName); 
     } 
     else if (sLastName.Trim().IsEmpty() && (!(sUserName.Trim().IsEmpty()))) 
     { 
      m_sQuery.Format(_T("SELECT USER_ID, USERNAME, ROLE, FIRSTNAME, LASTNAME, PASSWORD, CONFIRMPASSWORD FROM USERINFO WHERE USERNAME = '%s'"), sUserName); 
     } 
     else 
     { 
      m_sQuery.Format(_T("SELECT USER_ID, USERNAME, ROLE, FIRSTNAME, LASTNAME, PASSWORD, CONFIRMPASSWORD FROM USERINFO WHERE USERNAME = '%s' AND LASTNAME = '%s'"), sUserName, sLastName); 
     } 

     listUserProps = m_dbOperations.SelectUserDataFromDB(m_sFunctionName, m_sQuery); 
    } 
    catch (...) 
    { 
     AfxMessageBox(m_sFunctionName + L": Exception occured"); 
    } 

    return listUserProps; 
} 
+0

請出示你寫的代碼並不起作用。 –

+0

對於你在'username'字段中輸入's'的例子,查詢應該是'select * from USERINFO',其中用戶名LIKE的'%''不是嗎?它是標準的SQL。 –

+0

感謝您的回覆。我已經添加了函數,通過它格式化查詢,並且一旦格式化和構建,我將它傳遞給另一個函數,在那裏執行查詢。 – Sagar

回答

0

據我瞭解,你可能需要的東西是這樣的:

CString username; 

// Your code: obtain typed username into username 

CString querystring; 
querystring.Format(_T("select * from USERINFO where Username LIKE '%s%%'"), username); 

// perform your query using querystring here 
+0

謝謝Michael Walz。我得到了結果。非常感謝。 – Sagar

+0

隨時upvote和/或接受答案。 –