访问数据库的方式

WebBuilder默认提供基于JDBC的数据库访问控件和APi来访问数据库,具有灵活的访问方式和高效的性能。这些控件和API提供了从运行SQL,获取数据到自动生成指定类型的脚本等一系列操作。

使用数据库访问控件

数据库访问控件默认位于控件箱DataAccess目录下。

query

查询控件,用于运行SQL语句,返回SQL运行生成的结果集ResultSet或影响记录数。
该控件执行后,其返回结果和输出参数存储在HttpServletRequest对象的attribute中。在ServletScript中可以使用app.run()方法完成相同功能。

dataprovider

数据源控件,用于根据SQL生成指定类型的输出,比如用于表格的JSON语句,用于图片或者下载的流数据等。

configs: dictTableNames

数据字典表名列表(数据字典表就是数据表),多个表名以“,”f分隔。**用于数据源中的字段元数据信息对应到字典表中的同名字段设置的字典信息。**数据库实体表名无需对应到指定的字典表,因为字典信息仅仅通过字段名称来进行对照和识别,因此相同的字典表可以应用到不同的实体表中。如果指定多个字典表时存在重复字段,可以通过设置dictFieldsMap属性来区分。
通俗来讲就是给表格的列加上我们在数据表中给每列加的注释。

updater

数据更新控件,用于根据输入的参数自动对指定数据库表进行增删查改操作。它可以根据需要增删改的数据,自动生成增删改SQL语句。增删改数据中包含了新的记录字段值,也包含了新的需要被修改或删除记录的原值。该控件默认自动启用数据库事务,使所有的增删改操作在同一个事务内处理。该控件还支持批量操作,可以对数据表执行批量的增删改。

tableName

需要更新的实体表名称。所有自动生成的SQL语句均基于该表

mode

数据更新的类型,设置此属性则只更新此种类型

app.update({tableName:'value',mode:'update/insert/delete'
})

sqlswitcher

SQL切换控件,用于根据系统指定的默认数据库类型自动切换到对应的SQL语句。

使用数据库访问API

数据库访问API可以方便在Java或者ServerScript中对数据库进行访问。
以下是适用于ServerScript的API:

app.run

用于运行SQL语句,等同于query控件

app.update(config)

执行上下文绑定的insert, update, delete数据库更新操作。
config:配置参数对象,见updater组件
config实例:

app.update({tableName:'WB_MISC',mode:'update'
});

app.output(sql, [config], [returnScript])

从数据库获取数据,并且输出指定格式的脚本,图片或者流数据到客户端
sql就是sql语句
config时配置参数对象,见DataProvider控件的使用
returnScript:是否返回脚本,false直接输出,true返回生成的脚本,默认为false.

app.output('select BLOB_FIELD from WB_MISC where ID_FIELD = {?ID_FIELD?}', {type:'object'});

相关控件

store

store封装了客户端的数据模型,可以通过设置url属性来读取后台的数据,这个控件默认位于控件箱Data Access目录。设置autoLoad属性为true可以使store自动加载url指向的数据,如果不设置此属性可以通过store.locad()方法来加载数据。

grid

表格控件。 用以表格的形式显示数据。该控件封装了Ext.grid.panel类

Configs: gridLine

是否显示表格的网格线,默认是false

Configs:multiSelect

允许多选

新建表格

新建click点击事件,点击按钮就新建一行

Wb.addEdit(app.edit1);

Wb

verrifyGrid(Object):boolean

验证可编辑表格数据是否合法。如果非法,系统将焦点转移到第一个非法的单元格
返回ture合法,false不合法

if(!Wb.verifyGrid(app.grid1))
return;

sync(configs)

把表格或者store数据同步到后台。同步操作在一个请求内完成

Wb.sync({grid:app.grid1,url:'m?xwl=demo/crud-database-access/simple-save',message:'正在保存中',success:function(resp){app.store.commitChanges();//如果存在多个store可以设置normalName属性或者通过app.grid.store方式找到store对象,执行完这一句应该是表格也更新了。Wb.toast('已经成功保存数据.');}
})

setTitile(panel, subTitle)

设置面板的子标题,子标题将以“标题-子标题”的形式显示在面板标题上。

这里的增删查改就是window的标题,添加就是通过ServerScript脚本设置的

app.win.show();
app.win.setIconCls('record_add_icon');
Wb.setTitle(app.win, '添加');
app.isNew = true;

apply(object, config)

把config中的值复制到object中,defaults为config的默认值。

add(object, records)

var newRecords = Wb.add(app.grid1, [{field: 'foo'}, {field:'bar'}]);

其中object是表格或store对象
records是添加包含数据的对象或对象列表

applyIf

如果object中不存在相同名称的值,则把config中的值复制到object中
返回的还是object对象本身

var values;
values = Wb.applyIf(Wb.getValue(win), Wb.getData(app.editRec, true));

getData(records, [mergeFields], [fieldNames])

获取表格记录中的数据对象。
records记录或数组。如果值为grid或store将获取表格中所有记录数据。
mergeFields:是否合并记录原始值和修改值,原始记录的字段加#前缀。默认为false
返回记录或记录组成的列表。

update(record, data, commit)

把指定对象的数据更新到记录中。如果对象的属性未在记录中找到对应的字段,该对象属性将被忽略。
record:需要更新的记录
data:数据对象
commit:更新完成之后是否自动提交,默认为true.

setValue(components, values)

对指定控件下的一组控件进行赋值, 其值由values对象指定,values中的每一个子项的名称为控件为itemId,值为控件值

Wb.setValue(win, {text1:'foo', date1:new Date()});

del(object, [config])

删除表格中选择的记录。 首先提示确定是否删除,然后向后台发送请删除数据请求, 最后在请求返回后删除表格中的数据
object:表格或者store对象
configs配置参数

  • url: 后台url地址
  • params: 参数对象
  • failure:调用失败后触发的事件
  • success:调用成功后触发的事件
  • titleField:用户提示信息的标题字段名称。

window

弹出的可拖动并调整大小的容器控件,用于实现应用的窗口。该控件疯转了Ext.window.window类

editWin

指定该窗口为编辑窗口,编辑窗口是指dialog为true,autoReset为true的窗口

forceController

应该是必须是字符串的类型

ok(win, options)

如果窗口是对话框,该事件将在点击确认按钮或按回车键时触发.
obj就是该事件。

getValue(compoents, [itemIds], [getFileName], [excludeTextValue])

要获取指定控件及其所包含的所有控件的值和显示文本组成的对象,对象中每一个值的名称为指定控件的itemId,显示文本的名称为指定控件的itemId加前缀’%’.只有具有getValue()方法的控件的值才能被获取。如果控件还具有getTextValue()方法。则其显示文本也将被提取。如Text控件将获得值,conbo控件将获得值和显示文件,panel控件不获得值(添加getValue()方法除外)。如果控件下存在重复itemI的()控件,则只返回第一个控件值,其余重名的控件将被忽略。Example:

var jsonObject1 = Wb.getValue(app.window1);//获取window1下所有控件的值组成的对象
var jsonObject2 = Wb.getValue([text1, date1]);//获取text1和date1的值组成的对象。

Parma

默认窗口

添加默认窗口为隐藏,非模态,可调整大小,可拖动,关闭时默认隐藏的窗口。
设置model属性为true可以模态显示窗口,
设置autoShow属性为true可以在窗口关闭(隐藏)时自动重置窗口内所有组件。
当需要显示窗口时,可以使用类似以下的代码:

app.win.show();

消息框

win.toast()

显示无标题栏的自动隐藏的消息窗口

sys:系统参数和变量

sys.id

当前发起请求时服务器产生的id号,每次请求id均唯一

今天将将做完这个basic-dialog-edit,基本所有知识点都在这篇博客里面,明天再做一遍加深以下。

005-webbuilder应用-访问数据库-basic-dialog-edit相关推荐

  1. VC++ 访问数据库实例详解图解

    一 ADO 方式访问 Access 新建一个对话框工程,添加控件,如图: 创建Access数据库如图: 应用程序启动时进行COM初始化: BOOL CDemoApp::InitInstance() { ...

  2. VC访问数据库学习总结

    VC连接数据库方式 目前Windows系统上常见的数据库接口包括: ODBC(开放数据库互连):访问数据库得先配置数据源 MFC(Microsoft基础类)ODBC类 DAO(数据访问对象) RDO( ...

  3. 使用程序设计语言访问SQL:JDBC、从Python访问数据库、ODBC、嵌入式SQL

    SQL 提供了一种强大的声明式查询语言.用 SQL 编写查询通常比用通用程序设计语言同样的查询进行编码要简单得多.然而,基于至少两种原因数据库程序员必须能够访问通用程序设计语言: 1.因为 SQL 并 ...

  4. 转:在 .NET 中实现异步回调访问数据库

    在 .NET 中实现异步回调访问数据库 时间:2009-11-17 19:52来源:网络收集 作者:佚名 点击: 334 次 技术论坛 某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的 ...

  5. 使用浏览器wpf应用程序时访问数据库需要报权限错误的解决方法

    在这篇wpf教程中,如果选用浏览器wpf应用程序模板我遇到了  访问数据库时权限不够  不能打开连接 将项目属性的安全性中设置为完全信任后即解决 转载于:https://www.cnblogs.com ...

  6. python访问数据库如何解决高并发_怎样解决数据库高并发的问题

    怎样解决数据库高并发的问题?解决数据库高并发使用缓存式的Web应用程序架构.增加Redis缓存数据库.增加数据库索引.页面静态化.使用存储过程.MySQL主从读写分离.分表分库.负载均衡集群. 解决数 ...

  7. Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  8. 关于安卓通过webservice访问数据库问题

    ============问题描述============ 访问数据库时,手机能增删数据库的数据就是显示不了数据库的里的数据不知道是哪里的问题,用的HTTP 这是我webservice中的产看所有信息的 ...

  9. 注意:宝塔曝未授权访问数据库漏洞,尽快升级版本!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://nosec.org/home/ ...

最新文章

  1. 关于学习Python的一点学习总结(9->字典创建及相关操作)
  2. Google 希望将 Go 打造成云端应用开发的首选语言
  3. 我玩《王者荣耀》、斗地主、打麻将,但我是正经搞AI的北大教授
  4. C语言 | C编程练习题(代码版)
  5. VTK:几何对象之OrientedCylinder
  6. centos7 oracle_Centos7主机名变成bogon的原因及解决方法
  7. [转载] Scala继承与Java的区别
  8. JuliaPro安装与使用
  9. jpa mysql脚本迁移_Spring Boot 数据库迁移:概述
  10. MATLAB 四元数旋转函数
  11. tensorflow学习(一)——有关tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别
  12. 易筋SpringBoot 2.1 | 第十五篇:SpringBoot连接池Druid
  13. JAVA日期格式化大写YYYY-MM-dd和小写yyyy-MM-DD的坑
  14. 适合小型团队的在线文档管理系统【minDoc】
  15. 白盒测试和黑盒测试(感谢东子哥作答)
  16. javascript开发HTML5游戏--斗地主(单机模式part2)
  17. Sublime3-打开md-1.1
  18. 学习博士答辩之后的感想:
  19. win10禁止计算机进入休眠,Win10怎么关闭系统休眠 Win10关闭系统休眠方法
  20. Python统计《红楼梦》人物出现频率

热门文章

  1. 使用JAVA结合Javascript、html和Python完成一些有意思的练手项目
  2. 【ISO14229_UDS诊断】-8.1-$3E服务TesterPresent理论部分
  3. Go 新关键字 any,interface 会成历史吗?
  4. sql中 count(*),count(1)以及count(字段)的区别
  5. 【Apriori算法和FP-growth算法】
  6. TWS耳机新品发展趋势:主动降噪、健康辅助、个人化定制、3D立体声效
  7. JWT|概述|JWT结构|JWT在java中的使用|JWT工具类的封装|JWT在springboot中的使用|JWT与拦截器的配合
  8. Android bugly 手动上传符号表
  9. Linux (Ubuntu)安装SVN服务端详细篇
  10. linux下使用mysql