使用dbffcmd和dbrpcsend从c++调用SQL Server存储过程
Call SQL Server Stored Procedures from C++ with dbfcmd and dbrpcsend
我正在阅读一个用c++编写的应用程序,从远程sql server 2005数据库调用存储过程。
我发现它使用两种不同的方法来进行远程SP调用。
- 使用dbfcmd
int ProcessMsg1(PDBPROCESS dbproc){ dbfcmd(dbproc,"exec message1_proc '%s'",blk->msgtype); dbsqlexec(dbproc); if (dbretstatus(dbproc)==-1) printf("dbsqlexec failed.n"); }
使用dbrpccinit, dbrpcparam, dbrpcsend
int ProcessMsg2(PDBPROCESS dbproc){ dbrpcinit(dbproc, "message2_proc", (DBSMALLINT)0); dbrpcparam(dbproc, "@MType", 0, SQLCHAR, 4, 4, blk->msgtype); if ((dbrpcsend(dbproc) == FAIL)) printf("dbrpcsend failed.n"); }
我在google上找不到两种方法的比较。任何人都可以解释两种方法的区别,什么时候必须使用什么?
第一种是使用字符串连接,这会导致SQL注入灾难、计划缓存膨胀、过多的服务器端解析等,尽管在这种情况下,由于调用了存储过程,这些影响会降低。
第二个使用了一个准备好的语句,即正确的方法。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 在C++中调用 MS SQL 存储过程
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 使用来自 SOCI 的匿名 PL SQL 块调用 PLsql 脚本
- 由触发器调用的 MS SQL XP 更改 C++ 文件日期戳,以允许刷新表单应用程序 vb.net
- 为什么从客户端应用程序调用 PL/SQL 调用 SQL 引擎
- C++MySQL连接器无法在sql::Connection close()调用上断开TCP连接
- SQL Server-使用C++ODBC调用存储过程
- 使用dbffcmd和dbrpcsend从c++调用SQL Server存储过程
- UDF调用SQL Server内部的外部C++代码
- sql server 2008-如何使用ADO从c++调用用户定义的函数