擅长:python、mysql、java
<> P>为了回答被问及的问题,习惯的C++方式是^ ^ <CD1>}。注意,这个流类是由内存支持的,而不是磁盘上的文件。在</p>
<^ >(还有{{CD2>}选项),它看起来更接近Python字符串格式,但有C风格的接口,不应该从现代C++中使用,没有充分的理由。如果你正在写C++,那么写C++,而不是C)/P>
<pre><code>std::string toSql(
std::string const & table,
std::string const & field,
std::string const & value
) {
std::ostringstream s;
s << "INSERT INTO " << table
<< " (" << field << ") VALUES (" << value << ")";
return s.str();
}
</code></pre>
<p>但是,<strong>请注意,如果任何参数都是未经认知的用户输入,这可能会使您的程序面临SQL注入攻击</strong>。您应该改为使用一个准备好的语句(<code>sqlite3_prepare()</code>后跟<code>sqlite3_bind_...()</code>)将<code>value</code>绑定到语句中,但是您仍然必须从<code>table</code>和<code>field</code>参数构建字符串,因为这样无法绑定数据库对象名。在</p>
<hr/>
<P>可以使用准备好的语句“C++方式”(C++ 11或更好的^ ^ <CD8>}):</P>
^{pr2}$
<p>使用此代码,您可以将<code>sqlite3_prepared_stmt</code>存储在某个地方并重用它。在</p>