2016-02-04 82 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和/或接受答案。 –