我想能够使用4个不同的变量在一个选择语句在c++
I want to be able to use 4 different variables in a select statement in c ++
首先,我是c++新手,我正试图学习它来更新我公司的一个遗留应用程序。这是在windows xp和visual c++ 6.0,这不是有趣的…任何方式我有这个选择语句读取我的数据库和搜索一个ResourceID就像我设置我的m_operSet。我想在like语句中使用4个特定的变量。问题是,当我将它设置为一个特定的,它将不会找到任何其他资源,除了我设置它。这是我的代码,这是我的操作。set .cpp和我的bordDlg.cpp.
这是我希望为m_operSet
使用的变量列表"棒子"
"网卡"
"SIC"
PRS的
基本上我想使用if else语句…如果COB使用COB,如果NIC使用NIC,如果SIC使用SIC,如果PRS使用PRS
<标题> BordDlg.cpp h1> operationSet.cpp h1> div class="answers">这些函数构建一个如下所示的查询字符串:
SELECT ..whatever.. FROM ..whatever.. WHERE ...
... and [WORKORDER_SUB_ID] LIKE 'wid' and [RESOURCE_ID] LIKE 'rid' and ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
^ build by setSubID ^ build by setResourceID ^ by other
你需要构建这个:
... and [WORKORDER_SUB_ID] LIKE 'wid'
and ( [RESOURCE_ID] LIKE 'rid1' or [RESOURCE_ID] LIKE 'rid2' ) and ...
快速修复(不推荐)是:
m_operSet.setResourceID("COB' or [RESOURCE_ID] LIKE 'NIC' or [RESOURCE_ID] "
"LIKE 'SIC' or [RESOURCE_ID] LIKE 'PRS");
和
m_strFilter += "and ( [RESOURCE_ID] LIKE '" + resID + "' ) ";
这样的话,你最终会得到一些怪物,在调用者和被调用者的函数中添加了撇号,而没有一致性。
一个更好的方法:
void operationSet::setResourceID(std::vector<std::string> const &resIDs) {
m_strFilter += "and (";
for (auto it = resIDs.begin(); it != resIDs.end(); ++it) {
if (it != resIDs.begin())
m_strFilter += " or ";
m_strFilter += " [RESOURCE_ID] LIKE '" + *it + "' ";
}
m_strFilter += " ) ";
}
m_operSet.setResourceID({"COB", "NIC", "SIC", "PRS"});
如果你的应用程序框架:
CString
和std::string
。很可能他们没有给他们写operator +
。所以你有两个选择:使用.c_str()
,如果他们有CString
和c strings
的operator +
,或者只使用std::vector<CString>
代码用
c++11
编写。看看你的编译器是否支持c++11
。如果没有,你需要用std::vector<std::string>::const_iterator
代替auto
和调用:
std::string res_id_arr[4] = {"COB", "NIC", "SIC", "PRS"};
std::vector<std::string> res_ids(res_id_arr, res_id_arr + 4);
m_operSet.setResourceID(res_ids);
- 性能问题:许多副本将通过这种方式传递(但对于
CString
也是如此)。所以你真的需要用c++11
编译并使用move语义。在c++11
中移动网络上有资源
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '