当前位置: 首页 > 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语言的世界吧 当然,题目还是来源于牛客网 完完全全零基础 编程语言初学训练营_在线编程题…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...