CString 到 LPCTSTR 的转换会中断 sql 查询
CString to LPCTSTR conversion breaks sql query
>我有一部分较大的sql查询存储为LPCTSTR
LPCTSTR var = _T(" SELECT ...");
它工作正常。我需要用变量修改查询,所以我正在尝试
CString sqlQuerry = _T(" SELECT ... %s");
CString sqlString, stringVar = _T("variable");
sqlString.Format(sqlQuerry, stringVar);
var = (LPCTSTR)sqlString; // var is LPCTSTR type
当我在调试器中观察它时,var 看起来不错,但是当我运行应用程序时,输出窗口显示奇怪的字符而不是我的查询 (°YQ)。
我删除了修改部分,所以现在它只是
CString sqlQuerry = _T(" SELECT ...");
var = (LPCTSTR)sqlQuerry;
但是,调试输出中仍然有奇怪的字符。对我来说看起来像编码问题,我做错了什么?
var = (LPCTSTR)sqlString; // var is LPCTSTR type
你以后用var
做什么?当sqlString
失去范围时,var
指向垃圾。这不是复制,var
只是指向sqlString
内部缓冲区的指针。
也就是说,使用绑定参数。不要对 SQL 字符串使用任何类型的字符串格式。真。使用绑定参数。谷歌它或使用维基百科。让小鲍比表感到自豪。
相关文章:
- 如何使用c++在VS 2019上运行SQL查询
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 类成员和中断
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 我的代码运行良好,但在游戏循环中中断
- 使用带有MCP23017的 pigpio 进行中断读取
- 在C++中调用 MS SQL 存储过程
- 为什么我在 AVR 中的中断无法正常工作?
- 尝试创建表会给出 SQL 逻辑错误
- 在 MySQL/Connector C++中使用 SQL 联接
- 使用 UDP 中断 while()-循环
- Qt PL/SQL - 赋值运算符 - 字符串缓冲区太小
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何为伺服电机创建中断或返回值?
- 开关:无外壳中断
- 如何使用中断停止循环?
- PostgresSQL - SQL Ready 语句与字符串转义,防止 SQL 注入攻击
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- CString 到 LPCTSTR 的转换会中断 sql 查询