sqlite3在C+中+;(带表及其索引的存储过程或复杂sql) 我在我的C++应用程序中尝试了SqLITE3。我已经做了: sqlite3 my.db sqlite>创建表链接(UrlAsID VARCHAR(255)主键,所有者VARCHAR(255),…,CreationTime整数) sqlite>在链接上创建索引链接(UrlAsID、CreationTime ASC) 然后我打开了一个从C++代码到数据库的连接。
在代码中我有一个Url对象。现在我要做的是:sqlite3在C+中+;(带表及其索引的存储过程或复杂sql) 我在我的C++应用程序中尝试了SqLITE3。我已经做了: sqlite3 my.db sqlite>创建表链接(UrlAsID VARCHAR(255)主键,所有者VARCHAR(255),…,CreationTime整数) sqlite>在链接上创建索引链接(UrlAsID、CreationTime ASC) 然后我打开了一个从C++代码到数据库的连接。,c++,sqlite,C++,Sqlite,在代码中我有一个Url对象。现在我要做的是: // check if url is in index (and in table as well) string urlID = sqlite3_exec("SELECT UrlAsID FROM linkIDs WHERE UrlAsID = " + Url.id + ";"); if (urlID.empty()) { sqlite3_exec("INSERT INTO links VALUES (" + Url.properties
// check if url is in index (and in table as well)
string urlID = sqlite3_exec("SELECT UrlAsID FROM linkIDs WHERE UrlAsID = " + Url.id + ";");
if (urlID.empty()) {
sqlite3_exec("INSERT INTO links VALUES (" + Url.properties + ");");
sqlite3_exec("INSERT INTO linkIDs VALUES (" + Url.id + "," + int(Url.creationTime) + ");");
} else {
sqlite3_exec("UPDATE links SET (CreationTime = " + int(Url.creationTime) + "," + ... + ") WHERE UrlAsID = " + Url.id + ";");
sqlite3_exec("UPDATE linkIDs SET (CreationTime = " + int(Url.creationTime) + ") WHERE UrlAsID = " + Url.id + ";");
}
我想创建一个存储过程或使用一个复杂的SQL语句来封装上述逻辑。你能为我提供更精确的代码来完成这项工作吗
提前谢谢你 SQLite不支持存储过程:
如果SQL代码很复杂,我会尝试将其放入.SQL文件中,然后加载到变量中并执行。SQLite不支持存储过程:
如果SQL代码很复杂,我会尝试将其放入.SQL文件中,然后加载到变量中并执行。SQLite存储过程。您最多只能使用准备好的语句。您还应该使用SQLite绑定方法来设置参数,而不是字符串连接。请阅读此处的介绍:SQLite存储过程。您最多只能使用准备好的语句。您还应该使用SQLite绑定方法来设置参数,而不是字符串连接。请阅读这里的介绍:为了安全和速度,您的陈述应该用一个包装。此外,为了安全和速度,您应该再次使用(不同类型的安全,但即使如此)。你应该使用。所有这些都与您嵌入的语言无关,但链接指向的是相关语法。为了安全和速度,您的语句应该包装在一个文本中。此外,为了安全和速度,您应该再次使用(不同类型的安全,但即使如此)。你应该使用。所有这些都与您嵌入的语言无关,但链接指向相关语法。谢谢。他们的文档中没有给出例子,而是一个简单的理论。谢谢。他们文档中的问题并没有给出示例,而是一个简单的理论。谢谢!我理解,但还不能写一个工作程序在我的情况下。实验。我想我会指出你需要记住的事情,并试图把指针用C++解释语法(或C或Objc)的地方,这些差别对于SQLite API来说是很小的。谢谢!我理解,但还不能写一个工作程序在我的情况下。实验。我想我会指出你需要记住的事情,并尝试用C++中的语法(或C或Objc)解释指向指针的地方,这些差别对于SQLite API来说是很小的。它确实提供了一种机制,允许您添加自己的函数,但这取决于嵌入SQLite的语言/运行时。OTOH,它对准备好的语句的支持非常好,并且由于SQLite内部编译的方式的性质,从一个连接到另一个连接重用准备好的语句不会带来很大的节约。(我想我应该带着这个评论去某个地方,但这有点像脑筋急转弯。:-)有点像。它确实提供了一种机制,允许您添加自己的函数,但这取决于嵌入SQLite的语言/运行时。OTOH,它对准备好的语句的支持非常好,并且由于SQLite内部编译的方式的性质,从一个连接到另一个连接重用准备好的语句不会带来很大的节约。(我想我应该带着这个评论去某个地方,但这有点像脑筋急转弯。:-)