}
```
+### Running SQL queries simultaneously using tasks
+```cpp
+ auto f1 = db.ExecAsync({ "SELECT name FROM TestTable;" });
+ auto f2 = db.ExecAsync({ "SELECT val FROM TestTable;" });
+ auto f3 = db.ExecAsync({ "SELECT num FROM TestTable;" });
+
+ f1.wait();
+ f2.wait();
+ f3.wait();
+
+ for (const auto& i : f1.get()) {
+ auto name = static_cast<std::string>(i.Get(0));
+ }
+
+ for (const auto& i : f2.get()) {
+ auto val = static_cast<double>(i.Get(0));
+ }
+
+ for (const auto& i : f3.get()) {
+ auto num = static_cast<int>(i.Get(0));
+ }
+```
+
### ToList(), ToVector() methods
- Once you provide function operator in your classes, you can call the methods.
- The class or struct should be movable.
EXPECT_EQ(cnt, 2);
}
+TEST_F(DatabaseTest, test_select_async) {
+ SetDefault();
+ using tizen_base::_;
+ tizen_base::Database db(TEST_DB, SQLITE_OPEN_READWRITE);
+ auto f = db.ExecAsync({ Q_SELECT });
+ auto r = f.get();
+
+ EXPECT_TRUE(r);
+ int cnt = 0;
+ for (const auto& i : r) {
+ auto [name, num, val, data] = i.Get<_, _, _, _>();
+ EXPECT_EQ(static_cast<std::string>(name), "gogo");
+ EXPECT_EQ(static_cast<int>(num), 1234);
+ EXPECT_EQ(static_cast<double>(val), 9.216);
+ auto v = static_cast<std::vector<unsigned char>>(data);
+ EXPECT_EQ(v.size(), 4);
+ EXPECT_EQ(v[0], '9');
+ EXPECT_EQ(v[1], '2');
+ EXPECT_EQ(v[2], '1');
+ EXPECT_EQ(v[3], '6');
+ cnt++;
+ }
+
+ EXPECT_EQ(cnt, 2);
+}
+
+TEST_F(DatabaseTest, test_select_async2) {
+ SetDefault();
+ using tizen_base::_;
+ tizen_base::Database db(TEST_DB, SQLITE_OPEN_READWRITE);
+ auto f1 = db.ExecAsync({ Q_SELECT });
+ auto f2 = db.ExecAsync({ Q_SELECT });
+
+ f1.wait();
+ f2.wait();
+
+ auto r1 = f1.get();
+ EXPECT_TRUE(r1);
+ auto r2 = f2.get();
+ EXPECT_TRUE(r2);
+
+ int cnt = 0;
+ for (const auto& i : r1) {
+ auto [name, num, val, data] = i.Get<_, _, _, _>();
+ EXPECT_EQ(static_cast<std::string>(name), "gogo");
+ EXPECT_EQ(static_cast<int>(num), 1234);
+ EXPECT_EQ(static_cast<double>(val), 9.216);
+ auto v = static_cast<std::vector<unsigned char>>(data);
+ EXPECT_EQ(v.size(), 4);
+ EXPECT_EQ(v[0], '9');
+ EXPECT_EQ(v[1], '2');
+ EXPECT_EQ(v[2], '1');
+ EXPECT_EQ(v[3], '6');
+ cnt++;
+ }
+
+ EXPECT_EQ(cnt, 2);
+
+ cnt = 0;
+ for (const auto& i : r2) {
+ auto [name, num, val, data] = i.Get<_, _, _, _>();
+ EXPECT_EQ(static_cast<std::string>(name), "gogo");
+ EXPECT_EQ(static_cast<int>(num), 1234);
+ EXPECT_EQ(static_cast<double>(val), 9.216);
+ auto v = static_cast<std::vector<unsigned char>>(data);
+ EXPECT_EQ(v.size(), 4);
+ EXPECT_EQ(v[0], '9');
+ EXPECT_EQ(v[1], '2');
+ EXPECT_EQ(v[2], '1');
+ EXPECT_EQ(v[3], '6');
+ cnt++;
+ }
+
+ EXPECT_EQ(cnt, 2);
+}
+
TEST_F(DatabaseTest, test_select2) {
SetDefault();
using tizen_base::_;