第三十七章 构建数据库应用程序 - 在页面上使用对象

简介: 第三十七章 构建数据库应用程序 - 在页面上使用对象

第三十七章 构建数据库应用程序 - 在页面上使用对象

CSP最强大的方面之一是,它允许创建可以直接与内置对象数据库交互的动态网页。 这意味着可以快速构建以下数据库应用程序:

  • 避免将关系数据映射到对象的复杂性
  • 不需要复杂的中间件
  • 能否在运行时重新配置,从单服务器配置到多层、多服务器配置,以获得真正的可伸缩性

注意,通过使用Caché SQL Gateway,可以构建访问第三方关系数据库中的数据的基于对象的CSP应用程序。Caché以应用程序透明的方式管理这一点; 无论选择将数据存储在内置的Caché数据库还是第三方数据库中,本章描述的所有技术都可以工作。

CSP是灵活; 可以使用各种技术构建数据库应用程序,从使用自动将数据绑定到HTML表单的高级标记到编写使用对象直接访问数据的服务器端脚本。 下面将概述这些技术。

在页面上使用对象

Caché使构建代表应用程序数据的持久对象数据库变得容易。 可以在web应用程序中以多种方式使用这些持久对象。

在页面上显示对象数据最直接的方法是使用服务器端脚本打开对象并写出其内容。

下面的示例使用Sample.PersonCaché Samples数据库中。这些示例使用CSP页面,但所描述的技术也适用于通过在类中将%CSP.Page子类化而构建的应用程序。

<html>
<body>
<script language="Cache" runat="SERVER">
 // open an instance of Sample.Person
 Set id = 1
 Set person = ##class(Sample.Person).%OpenId(1)
</script>
<table border="1">
<tr><td>Name:</td><td>#(person.Name)#</td></tr>
<tr><td>SSN:</td><td>#(person.SSN)#</td></tr>
<tr><td>City:</td><td>#(person.Home.City)#</td></tr>
<tr><td>State:</td><td>#(person.Home.State)#</td></tr>
<tr><td>Zip:</td><td>#(person.Home.Zip)#</td></tr>
</table>
<script language="Cache" runat="SERVER">
 // close the object
Set person = ""
</script>
</body>
</html>
复制代码

如果想尝试这样做,请将上面的代码复制到一个文本文件中,将其保存为/cachesys/csp/Samples目录(cachesyscaché的安装目录)中的myable.csp,然后将浏览器指向:

http://localhost:57772/csp/samples/mytable.csp
复制代码

应该看到数据显示在一个简单的HTML表中。

注意:注意不要在/csp/samples目录中进行任何实际工作。 如果升级Caché,它将重新安装示例并删除工作。

在表单中显示对象数据

使用与上面描述的代码类似的代码,可以在HTML表单中显示数据。此示例打开永久对象的一个实例,在HTML表单中显示其某些属性,然后关闭该对象。

<html>
<body>
<script language="Cache" runat="SERVER">
 // open an instance of Sample.Person
 Set id = 1
 Set person = ##class(Sample.Person).%OpenId(1)
 If ($Data(%request.Data("SAVE",1))) {
    // If "SUBMIT" is defined, then this is a submit
    // Write the posted data into the object and save it
    Set person.Name = $Get(%request.Data("Name",1))
    Set person.SSN = $Get(%request.Data("SSN",1))
    Set person.Home.City = $Get(%request.Data("City",1))
    Do person.%Save()
 }
</script>
<form method="POST">
<br>Name:
<input type="TEXT" name="Name" value="#(..EscapeHTML(person.Name))#">
<br>SSN:
<input type="TEXT" name="SSN" value="#(..EscapeHTML(person.SSN))#">
<br>City:
<input type="TEXT" name="City" value="#(..EscapeHTML(person.Home.City))#">
<br>
<input type="SUBMIT" name="SAVE" value="SAVE">
</form>
<script language="Cache" runat="SERVER">
 // close the object
Set person = ""
</script>
</body>
</html>
复制代码

%request.Data("txt",1) 是一个字符串值,如果数据小于的本地变量限制。 如果数据大于此值,CSP将创建一个包含数据值的流。 如果长字符串被禁用, 变量限制为32k。 如果启用长字符串,则边界会大得多。

如果你正在创建一个表单,其中包含一个可以容纳超过32K数据的字段,请按照下面的代码编写它:

Set value=%request.Data("fieldname",1)
If $isobject(value) {
    ; Treat this as a stream
} Else {
    ; Treat this as a regular string
}


相关文章
|
15天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
22 2
|
1月前
|
Devops API 项目管理
云效常见问题之页面提示数据库保存不进去如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
22 0
|
8天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
10天前
|
存储 数据库连接 数据处理
NumPy与数据库的结合应用探索
【4月更文挑战第17天】本文探讨了NumPy与数据库结合在数据处理和分析中的应用,阐述了结合使用的必要性,包括数据提取、转换、处理与分析及结果存储。通过Python数据库连接库提取数据,转化为NumPy数组进行高效计算,适用于金融等领域的数据分析。结合应用的优势在于高效性、灵活性和可扩展性,但也面临数据转换、性能优化和安全性挑战。
|
17天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
12 1
|
24天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
存储 传感器 数据管理
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
53 0
|
1月前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
1月前
|
存储 SQL 分布式计算
TiDB整体架构概览:构建高效分布式数据库的关键设计
【2月更文挑战第26天】本文旨在全面概述TiDB的整体架构,深入剖析其关键组件和功能,从而帮助读者理解TiDB如何构建高效、稳定的分布式数据库。我们将探讨TiDB的计算层、存储层以及其他核心组件,并解释这些组件是如何协同工作以实现卓越的性能和扩展性的。通过本文,读者将能够深入了解TiDB的整体架构,为后续的学习和实践奠定坚实基础。
|
1月前
|
人工智能 自然语言处理 NoSQL
悦数图数据库推出 AI 知识图谱构建器及图语言生成助手
随着人工智能应用在全球范围的普及和风靡,大语言模型技术(Large Language Model,简称 LLM)受到了广泛的关注和应用。而图数据库作为一种处理复杂数据结构的工具,能够为企业构建行业大语言模型提供强大的支持,包括丰富亿万级别的上下文信息,提升模型的应答精度,从而实现企业级的应用效果。同时,Graph+LLM 可以助力快速构建知识图谱,帮助企业更深入地理解和挖掘数据价值。

热门文章

最新文章