存档

2016年2月 的存档

了解Poco C++ Poco::Data 数据库基本操作(二)

2016/02/07 6,904

Statement

前面我们提到了Statement,但是到目前为止,我们只使用了session,至少从代码上来看是这样的。

而实际上,我们已经在使用statement了,只不过它在代码中隐藏了起来。我们来看看Session类中的<<操作符:

这里<<操作符创建了一个statement并将其返回。前面例子中我们使用<<操作符创建了statement,但是这个statement并没有分配到变量,一直到"now"部分executed了这个隐藏的statement,然后将其销毁。

我们将前面的例子拿一个出来修改一下:

当execute执行以后,数据已经插入了。可以使用stmt.done()来确认操作是否已经完全完成。

Prepared Statements

上例中省略的代码now子句创建了一个prepared statement.

prepared statement 的优势在于性能。我们假设有如下的循环:

在上例中,如果不使用prepated statement,我们需要创建和解析Statement 100次。而现在我们只需要创建并解析一次Statement,然后使用占位符匹配不同的值,多次执行来将name插入到数据中。

当然,对于如何将一系列值插入到数据库,上例的代码并不是最优解。通过Poco::Data与STL容器协作可以更好的解决这个问题。具体的我们将在"STL容器"这一节来讲。 继续阅读