From 39a95f6939417ebc5d8e716ca1664a1da1fc722c Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Thu, 09 Feb 2017 12:04:19 +0000
Subject: [PATCH] 根据回调函数参数推断绑定的数据类型。
---
README.md | 46 +++++++++++++++++++++++++++++++++-------------
1 files changed, 33 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index 60e813a..e19e54c 100644
--- a/README.md
+++ b/README.md
@@ -33,18 +33,22 @@
qtl::execute(stmt, &affected, "second_user", "third_user");
```
+或者
+```C++
+stmt<<"second_user"<<"third_user";
+
+```
#### 4. 查询数据,以回调函数方式处理数据
-当回调函数返回false时,中止遍历数据。
+程序会一直遍历数据集,直到当回调函数返回false为止。如果回调函数无返回值,相当于返回true。
```C++
-db.query("select * from test where id=?",
- id, std::tuple<uint32_t, std::string, qtl::mysql::time>(),
- [](uint32_t id, const std::string& name, qtl::mysql::time& create_time) {
+db.query("select * from test where id=?", id,
+ [](uint32_t id, const std::string& name, const qtl::mysql::time& create_time) {
printf("ID=\"%d\", Name=\"%s\"\n", id, name.data());
- return true;
});
```
+当无法根据回调函数的参数推断字段类型时,请使用query_explicit代替query,手动指定数据类型进行查询。
#### 5. 也可以把数据绑定到结构上
@@ -72,14 +76,24 @@
}
}
-db.query("select * from test where id=?",
- id, TestMysqlRecord(),
- [](TestMysqlRecord& record) {
+db.query("select * from test where id=?", id,
+ [](const TestMysqlRecord& record) {
printf("ID=\"%d\", Name=\"%s\"\n", record.id, record.name);
- return true;
});
```
-#### 6. 以迭代器方式访问数据
+#### 6. 用成员函数做为查询的回调函数
+当记录类有不带参数的成员函数时,可以直接用作查询的回调函数
+```C++
+struct TestMysqlRecord
+{
+ void print();
+};
+
+db.query("select * from test where id=?", id,
+ &TestMysqlRecord::print);
+```
+
+#### 7. 以迭代器方式访问数据
```C++
for(auto& record : db.result<TestMysqlRecord>("select * from test"))
@@ -87,6 +101,12 @@
printf("ID=\"%d\", Name=\"%s\"\n", record.id, record.name);
}
```
+#### 8. 指示器
+可以用指示器获取查询结果的更多信息。指示器包含以下成员:
+- data 存储字段的数据
+- is_null 字段是否为空
+- length 数据的实际长度
+- is_truncated 数据是否被截断
## 有关MySQL的说明
@@ -116,7 +136,7 @@
| bigint | int64_t<br/>uint64_t |
| float | float |
| double | double |
-| char<br>varchar | char[N]<br>std::array<char, N><br>std::string |
+| char<br>varchar | char[N]<br>std::array<char, N><br>std::string |
| blob<br>binary<br>text | qtl::blob_data<br>std::ostream |
| date<br>time<br>datetime<br>timestamp | qtl::mysql::time |
@@ -152,8 +172,8 @@
| ------- | ------ |
| integer | int</br>int64_t |
| real | double |
-| text | char[N]<br>std::array<char, N><br>std::string<br>std::wstring |
-| blob | qtl::const_blob_data<br>qtl::blob_data<br>ios::ostream |
+| text | char[N]<br>std::array<char, N><br>std::string<br>std::wstring |
+| blob | qtl::const_blob_data<br>qtl::blob_data<br>std::ostream |
当以qtl::const_blob_data接收blob数据时,直接返回SQLite给出的数据地址;当以qtl::blob_data接收blob数据时,数据被复制到qtl::blob_data指定的地址。
--
Gitblit v1.9.3