LIKE 运算符的查询字符串生成器

Query string builder for LIKE operator

本文关键字:字符串 查询 运算符 LIKE      更新时间:2023-10-16

我尝试搜索查询以返回存储在数据库中的用户名。但是,到目前为止,我无法得到答案。所以在这里,我正在寻求你的帮助。

我有一个 MFC 对话框,其中有一个用于输入用户名的编辑控件和一个查询数据库数据的搜索按钮。我只需要检索那些与 dit 控件中的字符串匹配的用户名。

假设有两条记录的用户名为 SagarSachin 。因此,如果我在用户名编辑控件中仅输入"s",则搜索按钮事件应检索Sagarsachin的数据。

幸运的是,我有一个在访问数据库中运行良好的查询,但不知道如何在 MFC 应用程序中构建和格式化查询。我可以在访问数据库中运行的查询是:

select * from USERINFO where Username LIKE [a-z]&"*"

请帮助我在单击搜索按钮时在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;
}

据我了解,您可能需要这样的东西:

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