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

urho3d数据库

只有在启用以下两个构建选项之一时,数据库子系统才会构建到Urho3D库中:Urho3D_Database_ODBC和Urho3D-Database_SQLITE。当两个选项都启用时,URHO3D_DATABASE_ODBC优先。这些构建选项决定子系统将使用哪个数据库API。ODBC DB API更适用于本地应用程序,尤其是游戏服务器,它允许应用程序建立与任何ODBC兼容数据库的连接,如SQLite、MySQL/MariaDB、PostgreSQL、Sybase SQL、Oracle等。另一方面,SQLite DB API适用于将SQLite数据库及其引擎嵌入应用程序本身的移动应用程序。数据库子系统使用统一的URHO3D API包装底层的DBAPI,因此在这两个构建选项之间切换时,库用户不需要或只需要很少的代码更改。

目前,该实现只支持立即执行SQL语句。准备好的报表和交易管理将在以后需要时添加。该子系统具有简单的数据库连接池功能。当使用ODBC DB API时,不应将此内部数据库连接池与ODBC连接池选项混淆。默认情况下启用内部池,除非正在使用ODBC DB API,并且在主机系统中检测到ODBC驱动程序管理器3.0或更高版本,在这种情况下,应使用ODBC连接池选项来管理数据库连接池

正在建立数据库连接

通过调用Connect()并传递一个所谓的数据库连接字符串来建立新的数据库连接。数据库连接字符串不仅标识要连接到哪个数据库,还标识其他相关的数据库连接设置,如:数据库用户id、用户密码、主机和端口号等。数据库连接字符串的格式由底层DBAPI控制。通常,在切换底层DBAPI和切换要连接的数据库时,连接字符串实际上是唯一需要更改的内容。

成功建立连接后,将返回有效的DbConnection对象。完成数据库连接后,应用程序应通过调用disconnect()来断开数据库连接。这是一个很好的练习。当Urho3D游戏引擎退出时,数据库子系统的析构函数会自动断开所有仍处于活动状态的数据库连接。

ODBC连接字符串

ODBC连接字符串的确切格式取决于特定数据库供应商的ODBC驱动程序。有关如何构造数据库连接字符串,请参阅随附的特定ODBC驱动程序文档。支持DSN和无DSN连接字符串。为了便于说明,本小节将仅以如何连接到MySQL/MariaDB数据库为例进行说明。假设MySQL/MariaDB数据库服务器在本地主机上运行,默认端口的数据库名为“test”,用户id和密码为“testuser”和“testpassword”。

DSN连接字符串

使用主机系统提供的GUI工具定义ODBC数据源。它可以是用户DSN或系统DSN。在Linux主机系统上,只需分别在“~/.odbc.ini”或“/etc/odbc.ini”中添加新的数据源条目。如果文件还不存在,请创建该文件。数据源条目必须至少包含以下信息。

   # These settings assume the host system uses unixODBC as ODBC driver manager

# Settings for iODBC driver manager would be slightly different

[testDSN]

Driver=MariaDB      # This is the name of the ODBC driver installed in the /etc/odbcinst.ini

Description=MariaDB test database

Server=localhost

Port=

User=testuser

Password=testpassword

Database=test

Option=3

Socket=

要连接到此数据源,请使用以下连接字符串:

DSN=testDSN

无DSN连接字符串

要连接到上述相同的数据库而不将其预先配置为ODBC数据源,请使用如下连接字符串:

   Driver=MariaDB;Database=test;User=testuser;Password=testpassword;Option=3

SQLite连接字符串

  SQLite数据库是单个磁盘文件。SQLite连接字符串只是指向单个磁盘文件位置的路径。绝对路径和相对路径都有效。当路径有效但磁盘文件还不存在时,SQLite数据库引擎将自动创建磁盘文件,从而在此过程中创建一个新的空数据库。这种方法的缺点是,无法传递额外的数据库连接设置。为此,SQLite DB API还支持使用RFC 3986 URI格式的连接字符串。有关详细信息,请参阅有关URI格式的SQLite文档。为了便于说明,本小节将假设SQLite磁盘文件名为“test.db”,位于主目录中,当前工作目录为主目录。

路径连接字符串

在上述假设下,以下示例连接字符串同样有效。

相对路径:

   test.db

或绝对路径:

   /home/testuser/test.db

URI连接字符串  

   在此格式中,附加的数据库连接设置可以作为查询参数传递。例如,要以只读和共享缓存模式连接到与上述相同的数据库,则可以将连接字符串重写为:

   file:./test.db?mode=ro&cache=shared

   或者

   file:///home/testuser/test.db?mode=ro&cache=shared

立即执行SQL语句

   使用Execute()以立即模式执行SQL语句。在即时模式下,SQL语句可以一次性打开、准备、执行和完成。执行即席查询是一种方便的方法,但当重复执行同一查询时,它可能对系统性能不利。无论查询类型是DML(数据操作语言)还是DDL(数据定义语言),该方法都返回DbResult对象。当正在执行的SQL语句是select查询时,DbResult对象仅包含结果集。使用GetNumColumns()和GetNumRows()查找结果集的大小。使用GetColumns()和GetRows()分别获取实际的列标题数据和行数据。对于DML语句,使用GetNumAffectedRows()查找受影响的行数。

   DbResult对象中的行数可能小于从数据库中提取的实际行数。这是因为E_DBCURSOR事件处理程序可能会指示将提取的行过滤掉。在E_DBCURSOR事件处理程序的请求下,也可以中止整个行提取过程。

使用准备好的语句和动态参数绑定执行SQL

 目前尚不支持。

 交易管理

   目前尚不支持。目前,除非数据库以只读方式连接(在这种情况下,DML和DDL语句将导致记录错误),否则所有语句都是自动提交的。

数据库游标事件

  当执行SQL语句时,有一个选项可以启用数据库游标事件的发送。在提取结果集的每一行时,都会发送此事件。即事件可以在Execute()方法返回之前发送多次。应用程序可以订阅此事件以影响结果集在DbResult对象中的填充方式。

  E_DBCURSOR具有输入和输出参数。

输出参数:

    P_SQL        SQL query string currently being executed (String)

P_NUMCOLS    Number of columns in the resultset (unsigned)

P_COLHEADERS Column headers in the resultset (StringVector)

P_COLVALUES  Row data as it is being fetched (VariantVector)

输入参数:

   P_FILTER设置为true以从DbResult对象中筛选出此行

   P_ABORT设置为true以中止进一步的提取过程

   

   P_FILTER可以用于任何其他客户端过滤逻辑,否则很难在数据库服务器端使用WHERE或HAVING子句执行这些逻辑。使用P_ABORT时,不会影响已填充到DbResult对象中的行。

相关文章:

urho3d数据库

只有在启用以下两个构建选项之一时,数据库子系统才会构建到Urho3D库中:Urho3D_Database_ODBC和Urho3D-Database_SQLITE。当两个选项都启用时,URHO3D_DATABASE_ODBC优先。这些构建选项决定子系统将使用哪个数据库API。ODBC DB API更适用于本地…...

141. 周期

Powered by:NEFU AB-IN Link 文章目录141. 周期题意思路代码141. 周期 题意 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如 abaab 共有 5个前缀,分别是 a,ab,aba,abaa,abaab。 我们希望知道一…...

Windows下命令执行绕过技巧总结(渗透测试专用)

一、连接符1、双引号不要求双引号闭合举例:"who"a"mi" //闭合的 "who"a"mi //不闭合的2、圆括号必须在两边,不能包括中间的字符。举例:((whoami))3、^符号(转译符号)不可以在结尾&…...

mindspore的MLP模型(多层感知机)

导入模块 import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import mindspore import mindspore.dataset as ds from mindspore import nn import mindspore.ops as ops import mindspore.numpy as mnp from …...

【论文极速读】VQ-VAE:一种稀疏表征学习方法

【论文极速读】VQ-VAE:一种稀疏表征学习方法 FesianXu 20221208 at Baidu Search Team 前言 最近有需求对特征进行稀疏编码,看到一篇论文VQ-VAE,简单进行笔记下。如有谬误请联系指出,本文遵循 CC 4.0 BY-SA 版权协议,…...

Flask-Blueprint

Flask-Blueprint 一、简介 概念: Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求 。 好处: 其本质上来说就是让程序更加松耦合…...

png图片转eps格式

下载latex工具后 在要转换的png图片文件夹路径下,打开命令行窗口,输入以下命令: bmeps -c fig图片名.png 图片名.eps...

English Learning - L2 语音作业打卡 Day2 2023.2.23 周四

English Learning - L2 语音作业打卡 Day2 2023.2.23 周四💌 发音小贴士:💌 当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音[ ɔ: ]&…...

低频量化之 可转债 配债 策略数据 - 全网独家

目录历史文章可转债配债数据待发转债(进展统计)待发转债(行业统计)待发转债(5证监会通过,PE排序)待发转债(5证监会通过,安全垫排序)待发转债(4发审…...

论文阅读_DALLE-2的unCLIP模型

论文信息 name_en: Hierarchical Text-Conditional Image Generation with CLIP Latents name_ch: 利用CLIP的层次化文本条件图像生成 paper_addr: http://arxiv.org/abs/2204.06125 doi: 10.48550/arXiv.2204.06125 date_read: 2023-02-12 date_publish: 2022-04-12 tags: [‘…...

软件测试5年,历经3轮面试成功拿下华为Offer,24K/16薪不过分吧

前言 转眼过去,距离读书的时候已经这么久了吗?,从18年5月本科毕业入职了一家小公司,到现在快5年了,前段时间社招想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了华为的…...

【软件工程】课程作业(三道题目:需求分析、概要设计、详细设计、软件测试)

文章目录:故事的开头总是极尽温柔,故事会一直温柔……💜一、你怎么理解需求分析?1、需求分析的定义:2、需求分析的重要性:3、需求分析的内容:4、基于系统分析的方法分类:5、需求分析…...

05 DC-AC逆变器(DCAC Converter / Inverter)简介

文章目录0、概述逆变原理方波变换阶梯波变换斩控调制方式逆变器分类逆变器波形指标1、方波变换器A 单相单相全桥对称单脉冲调制移相单脉冲调制单相半桥2、方波变换器B 三相180度导通120度导通(线、相的关系与180度相反)3、阶梯波逆变器独立直流源二极管钳…...

带你深层了解c语言指针

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨今天…...

2-MATLAB APP Design-下拉菜单栏的使用

一、APP 界面设计展示 1.新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、下拉菜单栏、坐标区,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:下拉菜单栏的使用,调整背景颜色,字体的颜色为黑色,字体的大小调为26. 2.在左侧组件库常用栏…...

七、HTTPTomcatServlet

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…...

LeetCode 热题 C++ 198. 打家劫舍

力扣198 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存…...

C语言学习笔记——程序环境和预处理

目录 前言 一、程序环境 1. 翻译环境 1.1 主要过程 1.2 编译过程 2. 运行环境 二、预处理 1. 预定义符号 2. #define 2.1 #define定义标识符 2.2 #define定义宏 2.3 命名约定和移除定义 3. 条件编译 4. 文件包含 结束语 前言 每次我们写完代码运行的时候都…...

「JVM 高效并发」Java 内存模型

Amdahl 定律代替摩尔定律成为了计算机性能发展的新源动力,也是人类压榨计算机运算能力的最有力武器; 摩尔定律,描述处理器晶体管数量与运行效率之间的发展关系;Amdahl 定律,描述系统并行化与串行化的比重与系统运算加…...

C语言刷题(2)——“C”

各位CSDN的uu们你们好呀,今天小雅兰来复习一下之前所学过的内容噢,复习的方式,那当然是刷题啦,现在,就让我们进入C语言的世界吧 当然,题目还是来源于牛客网 完完全全零基础 编程语言初学训练营_在线编程题…...

第一个 Spring MVC 注解式开发案例(初学必看)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

openresty学习笔记

openresty 简介 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部 集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于 方便搭建能够处理超高并发、扩展性极高的动态 web 应用、 web 服务和动态网关。 openresty 通过汇聚各种设计精良的 ngi…...

微信小程序DAY3

文章目录一、页面导航1-1、声明式导航1-2、编程式导航1-3、声明式导航传参1-4、编程式导航传参1-5、获取导航传递的参数二、页面事件2-1、下拉刷新事件2-1-1、启用下拉刷新2-1-2、配置下拉刷新2-1-3、监听页面下拉刷新事件2-2、上拉触底事件2-2-1、事件触发2-2-1、事件配置三、…...

【CAN】手把手教你学习CAN总线(一)

CAN总线一、CAN总线概念二、CAN的差分信号三、CAN总线的通信协议1、 帧起始2、仲裁段3、控制段4、数据段5、CRC段6、ACK段7、帧结束四、CAN的位时序1、同步段(SS)2、传播时间段(PTS)3、相位缓冲段(PBS)4、再…...

JUC 体系的基石——AQS

—— AQS(AbstractQueuedSynchronizer) 概念 抽象队列同步器;volatile cas 机制实现的锁模板,保证了代码的同步性和可见性,而 AQS 封装了线程阻塞等待挂起,解锁唤醒其他线程的逻辑。AQS 子类只需要根据状…...

Qt中信号与槽的使用

Qt中信号与槽的使用 Qt当中一个重要的东西是信号和槽,它被用于对象之间的通信。 在Qt中,例如“点击按钮”这个事件就是发送信号的对象,接收信号的是某一个窗口,响应信号的是一个处理,可以是隐藏窗口或者是关闭窗口。…...

力扣-销售员

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:607. 销售员二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 …...

HTML综合案例练习

一、展示简历内容 可以首先看一下我们的效果,之后再思考怎么实现 总的来说,这个练习不算难。 这里关于这个简历的代码编写我们不说太多,只注意以下几个内容即可: 注意及时查看我们的代码是否符合预期,即一段一段测 …...

MySQL运维

目录 1、日志 1、错误日志 2、二进制日志 3、查询日志 4、慢查询日志 2、主从复制 搭建 1、主库配置 2、从库配置 3、分库分表 1、简介 ​编辑 1、垂直拆分 2、水平拆分 3、实现技术 2、MyCat 3、MyCat使用和配置 配置 4、MyCat分片 1、垂直拆分 2、水平拆分…...

【网络原理10】构造HTTP请求、HTTPS加密

目录 一、构造HTTP请求 ①使用form表单构造HTTP请求: form表单是如何提交的 form提交的缺点 ②基于ajax构造http请求 如何使用Jquery框架 二、HTTPS 运营商劫持 HTTP的加密版本:HTTPS ①对称加密:客户端和服务端使用同一把密钥&…...