Delphi2010 DataSnap入门 (二)

我们来做个简单的数据库连接测试.

在上个学习的基础上,我们打开Server的ServerMethodUnit1模块,在设计界面放上三个控件:

SQLConnection1: TSQLConnection;
SQLDataSet1: TSQLDataSet;
DataSetProvider1: TDataSetProvider;

注意:

1、如果使用sa,如果没有密码的话会连接失败,需要建立一个带密码的用户或者将sa设置上密码.

2、如果连接SQL Server时报告错误,可以尝试安装一下MS SQL Server 2008 Native Client,这个包同样可以应用在SQL Server 2000中.

然后将SQLDataSet1的SQLConnection设置为SQLConnection1,并且在CommandText中输入命令,比如:select * from jobs (连接到pubs数据库),设置Active为True.

最后一步,将DataSetProvider1的DataSet设置为SQLDataSet1.

OK,我们的服务器就设计完成了,编译运行.

 

接下来, 我们来做一个客户端.在以前的DataSnap版本中(D7中好像是这样,其他版本没有测试),像刚才我们设计的东西要放在Remote Data Modul中,在连接的时候要使用DCOMConnection或者SocketConnection,现在不用了.

再打开我们上次设计的客户端程序,在窗体上放置几个数据处理控件,来吧,像一般的数据应用程序那样放入数据感知控件:

DBGrid1: TDBGrid;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;

然后我们要放入其他连接远程应用要用到的控件:

SQLConnection1: TSQLConnection;
DSProviderConnection1: TDSProviderConnection;

设置SQLConnection1的Driver为DataSnap,Connected为True(注意运行服务器),设置DSProviderConnection1的SQLConnection为SQLConnection1,注意,下面是很重要的一步,即在ServerClassName中输入TServerMethods1,不知道Delphi为什么没有自动取出,这里需要手工录入.

再设置ClientDataSet1的RemoteServer为DSProviderConnection1,现在就可以在ProviderName中选择DataSetProvider1了,如果没有上面那一步,这里将没有列出.

好了,设置ClientDataSet1的Active为True,设置DataSource1的DataSet为ClientDataSet1,设置DBGrid1的DataSource为DataSource1(这些活都太熟了吧?)

我们已经可以在网格中看到取回的数据来了.

 

那么,我们可以编辑这些数据并更新回服务器吗?

让我们接着来.

在窗体上放置一个按钮,然后在Click事件中写上一句代码:

 

 

ClientDataSet1.ApplyUpdates(0);

 

 

运行客户端,然后试着修改一下数据并点击按钮....

你可能顺利的提交了数据,但如果你操作的表没有自到增长字段的话,如果有自动增长字段,比如你测试的时候也像我一样使用的是pubs数据库,然后操作的是jobs表...

天啊,出现了错误?

这是自动增长字段的问题,我们有两种解决方法:

1.Server端我们使用ADO来处理,ADO在处理自动增长字段时还是比较方便的.

2.如果比较喜欢使用dbExpress,我们需要像下面这样做个设定:

回到服务器程序,选择我SQLDataSet,然后将所以字段都加进来,然后选择自动增长字段,在属性中进行如下设置:

AutoGenerateValue设置为AutoInc;

ProviderFlags属性设置为:[pfInWhere,pfInKey];

OK,编译运行,再回到客户端测试一下吧.

 

其实对于自动增长字段的处理,你直接不让它出现在结果集中也可以.自己多做做测试吧.

好了,现在可以不用配置复杂的DCOM,不用运行ScktSrvr(因为DSTCPServerTransport1已代替了), 简单分发你的分布式应用系统吧!

 

初学,有不当的地方请高手指正!

时间: 2024-07-29 02:00:52

Delphi2010 DataSnap入门 (二)的相关文章

Delphi2010 DataSnap入门 (一)

DataSnap到了Delphi2010有了很大的变化,已经可以完全抛弃DCOM之类的东西了,在以前版本中建立一个DataSnap,需要使用DCOMConnection或者SockConnection来连接到服务器,而在Delphi2010中提供了一个新的连接组件:TDSProviderConnection,可以更方便地来连接服务器. 先来学习一个简单的DataSnap: 新建一个工程,在Delphi Project中选择DataSnap Server组,然后选择其中的DataSnap Serv

Kinect for Windows SDK开发入门(二)基础知识 上

上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素.应用程序必须探测和发现链接到设备上的Kinect传感器.在使用这些传感器之前,必须进行初始化,一旦初始化成功后,就能产生数据,我们的程序就能处理这些数据.最后当应用程序关闭是,必须合理的释放这些传感器. 本文第一部分将会介绍如何探测初始化几释放传感器,这是非常基础的话题,但是对于基于Kinect开

Windows 8风格应用开发入门 二十九 捕获图片与视频

一.相机 关于相机 1.相机对话框提供了触屏优化的全屏体验,你可从嵌入的或附加 的相机中捕获照片和视频. 2.全屏对话框处理显示相机 UI 的工作. 3.通过此对话框, 你可以使用对 Windows.Media.Capture.CameraCaptureUI.captureFileAsyncAPI 的一种方法调用捕获 照片或视频. 4.作为捕获体验的一部分,用户可对其捕获的照片进行修剪,对捕获的视频进行 剪辑,然后再将它们返回至调用应用程序. 5.用户在捕获照片或视频前,还可调整一些相机设 置,

Windows 8风格应用开发入门 二十七 漫游应用数据

一.漫游应用数据概览 1.若应用当中使用了漫游应用数据,用户可以很轻松的在不同的设备间保持应用数据的同步. 2.Windows会将更新的漫游数据同步到云端,并将数据更新到其他安装此应用的设备上. 3.Windows 限制了每个应用可漫游的应用数据大小.若我们的应用达到漫游数据大小的限制,在应用的总漫游数据再次少于该限制之前,不会将应用的任何数据更新到云端,因此最好的做法是仅为用户首选项.链接和小型数据文件使用漫游数据. 4.只要用户在所需的时间间隔内从某个设备访问应用的漫游数据,这些数据将存在云

Windows 8风格应用开发入门 二十五 数据绑定

数据绑定是一种简单方式来显示数据,UI元素与数据对象之间的连接或绑定是允许数据在两者之间 流动的.另外建立了绑定且数据发生变化时,相应的UI元素会自动显示变化. 如何将UI元素与 数据进行绑定 开发入门 二十五 数据绑定-windows开发入门"> 从上面图可以知道,每个绑定必须指定一个源和一个目标. 其中源对象可以是任何CLR对象,包括目标元素自身和其他UI元素.目标可以是 FrameworkElement的任何DependencyProperty(依赖属性). 数据绑定引擎从Bindi

Windows 8风格应用开发入门 二十四 App Bar构建

构建应用栏的目的的显示导航.命令和始终隐藏不需要的使用的工具.我们可以把应用栏放在页面 顶部或底部或同时存在顶部和底部. 默认情况在AppBar是隐藏的,当用户单击右键.按下Win+Z .或从屏幕的顶部或底部边缘轻松时可显示或关闭AppBar.当然我们也可以通过编程的方式将AppBar设 置为当用户做选择或与应用交互时显示. 构建AppBar基本步骤 通常我们构建一个应用的 AppBar,只需要三步就可以完成: 开发入门 二十四 App Bar构建-jenkins构建自由风格"> 如何构建

Windows 8风格应用开发入门 二十三 App Bar概述及使用规范

App Bar概述 Windows 8 Store应用中的App Bar(应用程序工具栏)起到的作用和Windows Phone中AppBar一样.我们可以向用户提供各种操作接口,实现导航或者触发命令等. AppBar一 般默认是隐藏的,也可以设置为始终可见.我们可以通过清扫屏幕上边缘或下边缘时显示AppBar, AppBar被点击之后或失去焦点后隐藏,当然我们也可以通过编程方式控制AppBar显示或隐藏. Windows 8 Store应用中通常包含两种AppBar: 1)底部AppBar 底

Windows 8风格应用开发入门 二十二 MessageDialog

MessageDialog概述 MessageDialog指的就是对话框. 对话框的命令栏中最多包含三个命令.如果我们指定任何命令,将会有一个默认命令添加到对话框中,目的是关闭对话框. 对话框弹出后界面中所有元素将在对话框下面显示,并且将会阻塞任何触摸事件直到用户进行响应对话框. 另外对话框应该尽量少用. 注意:Windows 8风格应用中取消了MessageBox对象,取而代之的是MessageDialog对象. MessageDialog常用属性和方法 MessageDialog类包含两类构

AppleWatch开发入门二——界面布局

AppleWatch开发入门二--界面布局 一.简介         在iphone开发中,最基本的布局方式是通过frame,将控件的位置和大小固定在屏幕上,后来,由于手机屏幕的尺寸有了略微变化,有了autoresizing的布局框架,我们可以设置子视图随父视图的改变做一些相应的变化,再后来,iphone的尺寸与分辨率也越来越多,适配各个屏幕也成为了iOS开发者遇到的新的问题,幸运的是,autolayout机制的出现,大大减小了开发者在适配方面的成本.以上提到的两种布局方式,在以前博客中有讨论: