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

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...