SQL 句柄以及如何正确创建一个?

标签 sql c sql-server

这段代码不起作用(我从另一个问题得到这个),因为它的参数太少:sqldirect需要一个处理程序和一个长度。

我从高层次上知道句柄是什么,但我只在准备和绑定(bind)语句时看到它们,而不仅仅是像这样直接执行一次的语句。我正在学习 SQL,我发现所有这些都非常令人困惑。

有人可以解释如何为这段代码创建句柄,并可能指导我阅读一本好的 SQL 书籍或学习资源吗?很难在网上找到我可以关注的任何信息。

for (n = 0; n < 10000; n++) {
    char sql[1000];
    sprintf(sql, "insert into mytable (cola, colb) values(%d,%d)", n, n);
    SQLExecDirect(sql);
}

编辑:哎呀..我想我修复了我发布的代码中的错误。这个问题假设 sprintf 行没有缺少参数:

for (n = 0; n < 10000; n++) {
    char sql[1000];
    sprintf(sql, "insert into mytable (cola, colb) values(%d,%d)", n, n);
    SQLExecDirect(sql);
}

最佳答案

正如 @DanielE 所指出的,您忘记了 sprintf 的第一个参数,无论如何,这在 for 循环中更合适:

SQLPrepare("insert into mytable (cola, colb) values(?,?);");
for (n = 0; n < 10000; n++) {
    SQLBindParameter(1, n);
    SQLBindParameter(2, n);
    SQLExecute;
}

关于SQL 句柄以及如何正确创建一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25451325/

相关文章:

C 字符数组的意外输入

sql - 删除实例的所有临时表

mysql - 如何在一个mysql查询中选择多个外键

mysql - 比较一列数据后更新一列数据

无法在c中获取整数输入

在 C 中创建排序链表

mysql - "Invalid use of group function"未使用组功能

c# - 为什么我计算行数的原始查询总是返回 -1?

sql - 如何使用 SQL Server 的 INNER JOIN 进行删除?

sql-server - 如何防止 SSMS 在文件 "Look In"中查找和替换发生更改