当前位置: 首页 > news >正文

网站模板简易修改网站页面统计代码是什么

网站模板简易修改,网站页面统计代码是什么,那里可以找建网站的人,天水市建设局网站吊篮管理通知1 介绍YB.ORM YB.ORM 旨在简化与关系数据库交互的 C 应用程序的开发。 对象关系映射器(ORM) 通过将数据库表映射到类并将表行映射到应用程序中的对象来工作#xff0c;这种方法可能不是对每个数据库应用程序都是最佳的#xff0c;但它被证明在需要复杂逻辑和事务处理的应用程…1 介绍YB.ORM YB.ORM 旨在简化与关系数据库交互的 C 应用程序的开发。 对象关系映射器(ORM) 通过将数据库表映射到类并将表行映射到应用程序中的对象来工作这种方法可能不是对每个数据库应用程序都是最佳的但它被证明在需要复杂逻辑和事务处理的应用程序中是合理的。 虽然这是一个正在进行的项目但大多数功能都已经完成。 YB.ORM 项目的目标是 为 C 开发人员提供方便的 API保持C的高性能保持源代码在不同平台和编译器之间轻松移植支持大多数主要的关系数据库管理系统(DBMS) 该工具使用了 Martin Fowler 在《企业应用程序架构模式》一书中解释的许多概念即“延迟加载”、“身份映射”、“工作单元”等模式。同时项目开发受到启发借助 Java 的Hibernate框架的强大功能尤其是 Python 的SQLAlchemy设计。 对象关系映射 此部分可以参考我的另外一篇文章https://blog.csdn.net/weixin_42887343/article/details/120664818 关系数据库现在非常普遍——从 Oracle 集群到嵌入式 SQLite 基于文件的数据库关系数据库以具有列和行的矩形表的形式对数据进行操作。 从应用程序代码连接 SQL 数据库并不容易看看普通的ODBC API 就知道了针对数据库运行 SQL 语句的典型步骤可能包括以下内容 连接数据库提供参数主机、端口、模式、用户名、密码等。使用连接句柄创建游标并准备SQL 语句以文本形式提供 SQL 语句使用游标句柄可选择将输出参数绑定到您的输出变量这些变量将在提取完成时接收它们的值使用游标句柄可选择将输入参数位置参数或命名参数绑定到您的输入变量可选地为输入变量分配它们的值使用游标执行准备好的语句可选择继续执行步骤 5可选择获取结果集的下一行如果确定则查看您的输出变量可选择重复第 7 步关闭游标关闭连接 YB.ORM库的使用 使用 ORM 从模型定义开始。它可能看起来像一个带有表和关系的 XML 文件或者像一个类声明中的内联宏或者一个处理访问者的模板函数。此步骤可能需要也可能不需要代码生成或某种其他类型的预处理。这些变体中的每一个都有其自身的优点和缺点。 让我们考虑一个具有两个实体的示例架构Client和Order。它们之间是一对多的关系一个Client可能有零个也可能有多个Orders每一个都Order属于一个Client。Clients存储在 table 中client_tbl而它们的Orders 存储在 table 中order_tbl。 在 SQL 级别该关系可以表示为子表中的列引用父表中的主键列的外键约束。从 ORM 的角度来看这种关系通常由对象的属性来表示。类的实例具有对象引用属性引用类的单个父对象。从关系的另一端看一个类的实例可能有一个对象集合属性也称为“ ”可以用来遍历它的所有子对象。client_id order_tblid client_tblOrderClientClientbackrefOrder 让我们定义映射模式以及两个类Client和Order。 #include orm/domain_object.h #include orm/domain_factory.h #include orm/schema_decl.h class Order; class Client: public Yb::DomainObject { YB_DECLARE(Client, client_tbl, client_seq, client,YB_COL_PK(id, id)YB_COL_DATA(dt, dt, DATETIME)YB_COL_STR(name, name, 100)YB_COL_STR(email, email, 100)YB_COL_DATA(budget, budget, DECIMAL)YB_REL_ONE(Client, owner, Order, orders, Yb::Relation::Restrict, client_id, 1, 1)YB_COL_END) public:int get_info() const { return 42; } }; class Order: public Yb::DomainObject { YB_DECLARE(Order, order_tbl, order_seq, order,YB_COL_PK(id, id)YB_COL_FK(client_id, client_id, client_tbl, id)YB_COL(dt, dt, DATETIME, 0, 0, Yb::Value(sysdate), , , , )YB_COL_STR(memo, memo, 100)YB_COL_DATA(total_sum, total_sum, DECIMAL)YB_COL_DATA(paid_sum, paid_sum, DECIMAL)YB_COL_DATA(paid_dt, paid_dt, DATETIME)YB_REL_MANY(Client, owner, Order, orders, Yb::Relation::Restrict, client_id, 1, 1)YB_COL_END) public:const Yb::Decimal to_be_paid() {return total_sum - paid_sum.value(0);} };这些类声明可以放在标题或.cpp文件中。您的.cpp文件中还需要两句话才能使魔术生效 YB_DEFINE(Client) YB_DEFINE(Order)类Client和Order会自动获得一些新的数据成员和方法。现在类的每个对象都有映射属性id, dt, , …。name这些属性可用于以读取和写入模式访问列数据以及检查是否存在缺失值 ( IS NULL)。 要控制映射类的实例必须有一个类的实例Yb::Session它负责加载/保存对象、跟踪更改、控制关系等。在创建时Session将数据库方案传递给它。 int main() {Yb::init_schema(); // gather all declarations in one schemaYb::Session session(Yb::theSchema(), sqlitesqlite://./tut1.db);session.create_schema(true); // create schema if necessary现在你可以像那样立即使用域类 Order order;order.total_sum Yb::Decimal(3.14);order.paid_sum Yb::Decimal(0);order.save(session);Client client;client.name Some Name;client.email someemail;client.dt Yb::now();client.save(session);order.owner Client::Holder(client);session.commit();return 0; }您可以编译示例链接库ybutil和yborm然后它就可以运行了。如果你愿意你可以打开日志记录来查看引擎盖下发生了什么 #include util/nlogger.h #include iostream ...Yb::LogAppender appender(std::cerr);Yb::init_schema(); // gather all declarations in one schemaYb::Session session(Yb::theSchema(), sqlitesqlite://./tut1.db);session.set_logger(Yb::ILogger::Ptr(new Yb::Logger(appender)));以下是特定于 SQLite 数据库引擎的日志消息 14-10-27 14:19:38.489 21962/21962 DEBG sql: exec_direct: CREATE TABLE client_tbl ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, dt TIMESTAMP, name VARCHAR(100), email VARCHAR(100), budget NUMERIC ) 14-10-27 14:19:38.818 21962/21962 DEBG sql: exec_direct: CREATE TABLE order_tbl ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, client_id INTEGER NOT NULL, dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, memo VARCHAR(100), total_sum NUMERIC, paid_sum NUMERIC, paid_dt TIMESTAMP , FOREIGN KEY (client_id) REFERENCES client_tbl(id) ) 14-10-27 14:19:38.842 21962/21962 DEBG orm: flush started 14-10-27 14:19:38.843 21962/21962 DEBG sql: begin transaction 14-10-27 14:19:38.843 21962/21962 DEBG sql: prepare: INSERT INTO client_tbl (dt, name, email, budget) VALUES (?, ?, ?, ?) 14-10-27 14:19:38.843 21962/21962 DEBG sql: bind: (DateTime, String, String, Decimal) 14-10-27 14:19:38.843 21962/21962 DEBG sql: exec prepared: p12014-10-27 14:19:38 p2Some Name p3someemail p4NULL 14-10-27 14:19:38.844 21962/21962 DEBG sql: prepare: SELECT SEQ LID FROM SQLITE_SEQUENCE WHERE NAME client_tbl 14-10-27 14:19:38.844 21962/21962 DEBG sql: exec prepared: 14-10-27 14:19:38.844 21962/21962 DEBG sql: fetch: LID1 14-10-27 14:19:38.844 21962/21962 DEBG sql: fetch: no more rows 14-10-27 14:19:38.845 21962/21962 DEBG sql: prepare: INSERT INTO order_tbl (client_id, dt, memo, total_sum, paid_sum, paid_dt) VALUES (?, ?, ?, ?, ?, ?) 14-10-27 14:19:38.845 21962/21962 DEBG sql: bind: (LongInt, DateTime, String, Decimal, Decimal, DateTime) 14-10-27 14:19:38.845 21962/21962 DEBG sql: exec prepared: p11 p22014-10-27 14:19:38 p3NULL p43.14 p50 p6NULL 14-10-27 14:19:38.845 21962/21962 DEBG sql: prepare: SELECT SEQ LID FROM SQLITE_SEQUENCE WHERE NAME order_tbl 14-10-27 14:19:38.846 21962/21962 DEBG sql: exec prepared: 14-10-27 14:19:38.846 21962/21962 DEBG sql: fetch: LID1 14-10-27 14:19:38.846 21962/21962 DEBG sql: fetch: no more rows 14-10-27 14:19:38.846 21962/21962 DEBG orm: flush finished OK 14-10-27 14:19:38.846 21962/21962 DEBG sql: commit注意正确的插入顺序第一个 - 父母第二个 - 孩子。这是通过对对象图进行拓扑排序来实现的。外键的值是自动分配的主键的值也是如此。 如果我们从另一端操纵对象之间的链接也可以达到同样的效果 //order.owner Client::Holder(client); client.orders.insert(order);域类对于构造查询特别有用。例如我们需要一个针对特定客户订单的寻呼机让我们从 30 到 39含之间获取商品 #include boost/foreach.hpp ...Yb::DomainResultSetOrder rs Yb::queryOrder(session) .filter_by(Order::c.client_id 32738) .order_by(Order::c.dt) .range(30, 40).all(); BOOST_FOREACH(Order order, rs) { std::cout order.id ,; }在这里我们可以看到在不同 SQL 方言中实现不同的功能。例如对于 SQLite将发出以下 SQL 代码 SQL: SELECT order_tbl.id, order_tbl.client_id, order_tbl.dt, order_tbl.memo, order_tbl.total_sum, order_tbl.paid_sum, order_tbl.paid_dt FROM order_tbl WHERE (order_tbl.client_id ?) ORDER BY order_tbl.dt LIMIT ? OFFSET ?positional params: (32738, 10, 30)有关更多示例、下载和任何进一步信息请访问项目主页https://sourceforge.net/projects/yborm/。 原文链接https://www.codeproject.com/Articles/834803/Quick-Introduction-to-YB-ORM-Object-Relational-Map
http://www.w-s-a.com/news/81287/

相关文章:

  • 恒通建设集团有限公司网站企业网站百度指数多少算竞争大
  • 雅虎网站收录提交入口如何使用wordpress搭建网站
  • 微商城网站建设怎么样发稿是什么意思
  • dz建站与wordpress群晖做网站服务器速度快吗
  • 做手机网站的公司网站建设 app开发 图片
  • 网站开发技术背景介绍wordpress数据库重置密码
  • 开发建设网站的实施过程是一个logo设计品牌
  • 做360pc网站排名首页工程造价信息网官网首页
  • 产品销售网站模块如何设计大数据和网站开发
  • 现在帮别人做网站赚钱不济南做网站建设公司
  • 嘉兴网站建设哪家好最近三天的国际新闻大事
  • 安丘网站建设制作做网站口碑比较好的大公司
  • 成都专业做网站公司哪家好优化大师下载安装免费
  • 防蚊手环移动网站建设广东深圳有几个区
  • 网站建设找哪些平台宜兴网站开发
  • 免费网站应用软件wordpress添加动态图标
  • 中小企业网站建设客户需求调查问卷昆明网站建设一条龙
  • 网站内容的特点wordpress 移动端网页
  • 专门网站建设培训网站系统建设
  • 自己设计手机的网站wordpress主题加密教程
  • 北京网站建设公司飞沐卖水果网站建设的策划书
  • 北京免费自己制作网站短视频宣传片制作
  • 怎样进入谷歌网站电子商务网站建设软件选择
  • 建个普通网站多少钱设计师培训多少
  • 建设校园网站的意义视频链接提取下载
  • 天津电子商务网站wordpress安装图片
  • 青岛房产网站东莞网络营销外包公司
  • 网站建设中的页数网上工伤做实网站
  • 给公司做网站这个工作怎么样wordpress不支持中文标签
  • 湖南网站推广优化cc域名做门户网站