亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? testjoin.cpp

?? 俄羅斯牛人KK的作品,著名的ORDBMS,這里上傳最新的3.39版本源代碼.希望了解對象關系數據庫的同好,請不要錯過.
?? CPP
字號:
//-< TESTDB.CPP >----------------------------------------------------*--------*
// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *
// (Main Memory Database Management System)                          *   /\|  *
//                                                                   *  /  \  *
//                          Created:     27-Mar-2000   K.A. Knizhnik  * / [] \ *
//                          Last update: 27-Mar-2000   K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Sample of using indexed joins
//-------------------------------------------------------------------*--------*

#include "fastdb.h"
#include <stdio.h>

USE_FASTDB_NAMESPACE

struct Detail { 
    char const* name;
    double      weight;
    
    TYPE_DESCRIPTOR((KEY(name, INDEXED), FIELD(weight)));
};

struct Supplier { 
    char const* company;
    char const* address;

    TYPE_DESCRIPTOR((KEY(company, INDEXED), FIELD(address)));
};

struct Shipment { 
    dbReference<Detail>   detail;
    dbReference<Supplier> supplier;
    int4                  price;
    int4                  quantity;
    dbDateTime            delivery;

    TYPE_DESCRIPTOR((KEY(detail, HASHED), KEY(supplier, HASHED), 
                     FIELD(price), FIELD(quantity), FIELD(delivery)));
};

REGISTER(Detail);
REGISTER(Supplier);
REGISTER(Shipment);

char* input(char const* prompt, char* buf, size_t buf_size)
{
    char* p;
    do { 
        printf(prompt);
        *buf = '\0';
        fgets(buf, buf_size, stdin);
        p = buf + strlen(buf);
    } while (p <= buf+1); 
    
    if (*(p-1) == '\n') {
        *--p = '\0';
    }
    return buf;
}

int inputInt(char const* prompt) { 
    char buf[64];
    int val;
    *buf = '\0';
    do { 
        input(prompt, buf, sizeof buf);
    } while (sscanf(buf, "%d", &val) != 1);
    return val;
}

double inputReal(char const* prompt) { 
    char buf[64];
    double val;
    *buf = '\0';
    do { 
        input(prompt, buf, sizeof buf);
    } while (sscanf(buf, "%lf", &val) != 1);
    return val;
}


dbDateTime inputDate(char const* prompt) { 
    char buf[64];
    int d, m, y;
    *buf = '\0';
    do { 
        input(prompt, buf, sizeof buf);
    } while (sscanf(buf, "%d-%d-%d\n", &d, &m, &y) != 3);
    return dbDateTime(y, m, d);
}

int main() 
{
    const int maxStrLen = 256;

    dbDatabase db;

    char buf[maxStrLen];
    char name[maxStrLen];
    char company[maxStrLen];
    char address[maxStrLen];

    dbQuery q1, q2, q3, q4;
    q1 = "company=", company; 
    q2 = "name=", name; 
    q3 = "detail.name like",name,"and supplier.company like",company,
        "and supplier.address like",address,"order by price";
    q4 = "supplier.company like",company,"and supplier.address like",address,
        "and detail.name like",name,"order by",dbDateTime::ascent("delivery");

    dbCursor<Detail>   details;
    dbCursor<Shipment> shipments;
    dbCursor<Supplier> suppliers;

    Supplier  supplier;
    Detail    detail;
    Shipment  shipment;

    if (db.open("testjoin")) {
        while (true) { 
            printf(
"\n\n    MENU:\n\
1. Add supplier\n\
2. Add detail\n\
3. New shipment\n\
4. Find suppliers of the detail\n\
5. Find details shipped by supplier\n\
6. Exit\n");
            switch (inputInt(">> ")) { 
              case 1:
                supplier.company = input("Suppiler company: ", company, sizeof company);
                supplier.address = input("Suppiler address: ", address, sizeof address);
                insert(supplier);
                printf("Supplier added\n");
                break;
              case 2:
                detail.name = input("Detail name: ", name, sizeof name);
                detail.weight = inputReal("Detail weight: ");
                insert(detail);
                printf("Detail added\n");
                break;
              case 3: 
                input("Company name: ", company, sizeof company);
                if (suppliers.select(q1) == 0) { 
                    printf("No such supplier\n");
                    break;
                }
                shipment.supplier = suppliers.currentId();

                input("Detail name: ", name, sizeof name);
                if (details.select(q2) == 0) { 
                    printf("No such detail\n");
                    break;
                }
                shipment.detail = details.currentId();
                shipment.price = inputInt("Price: ");
                shipment.quantity = inputInt("Quantity: ");
                shipment.delivery = inputDate("Delivery: ");
                insert(shipment);
                printf("Shipment added\n");
                break;          
              case 4:
                input("Detail like: ", name, sizeof name);
                input("Company like: ", company, sizeof company);
                input("Address like: ", address, sizeof address);
                if (shipments.select(q3)) { 
                    printf("Detail Company Address Price Quantity Delivery\n");
                    do { 
                        printf("%s\t%s\t%s\t%d\t%d\t%s\n",
                               details.at(shipments->detail)->name, 
                               suppliers.at(shipments->supplier)->company, 
                               suppliers.at(shipments->supplier)->address, 
                               shipments->price, shipments->quantity, 
                               shipments->delivery.asString(buf, sizeof buf, "%A %x"));
                    } while(shipments.next());
                    printf("--------------------------------------------\n");
                } else {  
                    printf("No items selected\n");
                }
                break;
              case 5:
                input("Company like: ", company, sizeof company);
                input("Address like: ", address, sizeof address);
                input("Detail like: ", name, sizeof name);
                if (shipments.select(q4)) { 
                    printf("Company Address Detail Price Quantity Delivery\n");
                    do { 
                        printf("%s\t%s\t%s\t%d\t%d\t%s\n",
                               suppliers.at(shipments->supplier)->company, 
                               suppliers.at(shipments->supplier)->address, 
                               details.at(shipments->detail)->name, 
                               shipments->price, shipments->quantity, 
                               shipments->delivery.asString(buf, sizeof buf, "%A %x"));
                    } while(shipments.next());
                    printf("--------------------------------------------\n");
                } else {  
                    printf("No items selected\n");
                }
                break;
              case 6:
                printf("Close database session\n");
                db.close();
                return EXIT_SUCCESS;
            }
            printf("Press any key to continue...\n");
            getchar();
            db.commit();
        }
    } else { 
        printf("failed to open database\n");
        return EXIT_FAILURE;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av国产精品久久久久| 天堂一区二区在线免费观看| 婷婷综合在线观看| 色美美综合视频| 亚洲免费观看高清在线观看| 99精品视频中文字幕| 亚洲天堂精品视频| 91蜜桃视频在线| 亚洲宅男天堂在线观看无病毒| 欧美性色综合网| 经典三级视频一区| 国产精品网站导航| 欧美丝袜自拍制服另类| 激情久久久久久久久久久久久久久久| 精品成人在线观看| 91久久精品国产91性色tv| 视频一区视频二区中文| 日韩一区二区在线播放| 91亚洲精品乱码久久久久久蜜桃 | 久久精品视频在线免费观看| 色欧美日韩亚洲| 成人国产视频在线观看| 成人免费在线播放视频| 欧美老女人第四色| 在线观看91视频| 色综合久久精品| 国产高清精品网站| 日本亚洲视频在线| 免费精品视频在线| 五月天婷婷综合| 日韩久久一区二区| 久久精品一区二区三区av| 欧美久久久久久久久久| 欧美日韩日日骚| 欧美性xxxxxx少妇| 欧美偷拍一区二区| 国产盗摄一区二区| 精品一区二区免费| 蜜臀久久99精品久久久久久9| 亚洲电影第三页| 亚洲一二三四区| 午夜电影久久久| 亚洲国产cao| 久久国产欧美日韩精品| 美女在线观看视频一区二区| 免费在线视频一区| 精彩视频一区二区| 国产精品一品视频| 大胆欧美人体老妇| 色欧美乱欧美15图片| 欧美一区二区三区免费大片 | 精品亚洲免费视频| 国产91清纯白嫩初高中在线观看| 国产成人免费在线视频| 国产成人午夜99999| 91免费观看国产| 91精品国产美女浴室洗澡无遮挡| 2023国产精华国产精品| 免费久久99精品国产| 国产精品亚洲午夜一区二区三区| av亚洲精华国产精华精华| 91精品国产综合久久精品图片 | 欧美亚洲尤物久久| 中文字幕高清一区| 日韩国产在线观看| av资源站一区| 26uuu精品一区二区三区四区在线| 欧美国产日韩精品免费观看| 午夜精品免费在线| 色综合久久久久久久| 中文字幕制服丝袜一区二区三区| 日本视频一区二区| 欧洲另类一二三四区| 1000精品久久久久久久久| 国产在线播精品第三| 91麻豆精品国产91久久久| 国产精品久久久久天堂| 懂色av一区二区三区免费观看| 日韩欧美黄色影院| 同产精品九九九| 欧美精品一级二级三级| 天天av天天翘天天综合网| 欧美xxxxx裸体时装秀| 亚洲欧美日本韩国| 色综合久久六月婷婷中文字幕| 中文字幕免费在线观看视频一区| 国产精品羞羞答答xxdd| 欧美国产丝袜视频| 一本色道久久综合亚洲aⅴ蜜桃 | 一区二区国产视频| 色综合天天综合色综合av| 亚洲一区二区三区自拍| 91久久线看在观草草青青| 亚洲一区在线播放| 日韩丝袜美女视频| 99热这里都是精品| 亚洲一区二区视频在线观看| 日韩欧美电影一二三| 91视频在线看| 宅男在线国产精品| 国产一区二区三区在线观看精品| 久久久精品欧美丰满| 精品视频1区2区| 懂色av噜噜一区二区三区av| 日韩福利视频导航| 亚洲欧美一区二区三区久本道91| 欧美va在线播放| 欧美狂野另类xxxxoooo| 91免费版在线看| 97久久精品人人做人人爽50路| 日韩国产精品久久久久久亚洲| 亚洲自拍都市欧美小说| 国产精品免费视频观看| 久久久久久免费| 久久亚洲一级片| 亚洲精品在线免费播放| 欧美成va人片在线观看| 26uuu国产一区二区三区| www.亚洲免费av| 免费成人在线播放| 亚洲视频一二三| 日韩一区中文字幕| 亚洲精品高清在线观看| 天天色图综合网| 麻豆精品精品国产自在97香蕉| 国产精品高潮呻吟| 亚洲精品中文在线影院| 亚洲午夜私人影院| 美女脱光内衣内裤视频久久影院| 久久99精品久久久久久动态图| 久久99精品国产91久久来源| 国产尤物一区二区在线| 99久久精品免费看| 91色在线porny| 色婷婷综合五月| 久久综合色鬼综合色| 国产欧美va欧美不卡在线| 亚洲狠狠丁香婷婷综合久久久| 亚洲成人精品在线观看| 粉嫩欧美一区二区三区高清影视| 972aa.com艺术欧美| 欧美日韩国产首页| 国产欧美日产一区| 日韩av中文字幕一区二区三区| 99久久精品免费看国产 | 成人av电影在线网| 精品欧美一区二区久久| 一区二区免费视频| 一本一道久久a久久精品综合蜜臀| 制服丝袜成人动漫| 国产精品久久久久久福利一牛影视 | 亚洲自拍偷拍av| av电影在线观看不卡| 久久久精品2019中文字幕之3| 日韩av不卡一区二区| av福利精品导航| 国产精品免费丝袜| 色综合天天综合网国产成人综合天| 久久久久国产精品免费免费搜索| 亚洲激情av在线| 成年人网站91| 欧美韩日一区二区三区| 国产一区二区导航在线播放| 欧美成人欧美edvon| 精品在线亚洲视频| 久久九九久久九九| av在线综合网| 香蕉久久一区二区不卡无毒影院 | 色综合久久久久久久久久久| 日韩一区欧美小说| 欧美亚洲国产bt| 午夜视频一区二区| 欧美久久久一区| 国产一区二区三区久久久| 最新日韩av在线| 日韩午夜在线观看视频| 国产成人a级片| 国v精品久久久网| 亚洲自拍偷拍图区| 久久综合色之久久综合| 一本一道波多野结衣一区二区| 日本欧美肥老太交大片| 日韩美女久久久| 日韩区在线观看| 色中色一区二区| 成人性生交大合| 国产伦精品一区二区三区视频青涩 | 色综合久久久网| 精品午夜一区二区三区在线观看| 亚洲激情在线播放| 国产精品视频yy9299一区| 精品视频999| 欧美日韩亚洲综合一区二区三区| 91在线视频网址| 99久久婷婷国产精品综合| 精品一区二区国语对白| 精久久久久久久久久久| 久久99精品久久久久| 亚洲一区二区精品3399| 一区二区三区在线观看欧美|