sql作业步骤可以不从第一步开始吗

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。
如我们在这里系列的前几篇文章所见,SQL Server代理由一系列的作业步骤组成,每个步骤是将要进行的不同类型的工作。这个作业步骤的每个都是技术独立的,但你可以通过作业步骤作为不同的工作项目,来创建工作流。在这篇文章里,你会学到如何在作业步骤间使用工作流来修改要进行的操作,还有单个作业处理多个条件。你也会进一步检查作业步骤安全的细节和不同作业子系统。
SQL Server代理作业步骤
SQL Server代理作业,如第2篇所描述的,包含一个或多个作业步骤。每个作业步骤是完全独立的操作,对于错误控制,日志和工作流都有独自的逻辑。当作业包含不止一个步骤,通过单个作业的工作流会有新的理解问题。没有包含作业步骤的作业本身不做任何事情(只有几个小警告)。
SQL Server代理作业步骤流
为了检查作业步骤和它们的工作流,在SSMS里创建新的作业。在SQL Server代理下右击【作业】文件夹,选择【新建作业】。在【常规】页面,命名作业名为&作业步骤&。选择【步骤】页,然后点击【新建】按钮来创建第一个作业步骤。新建作业步骤对话框出现,如图1所示。
插图1:新建作业步骤对话框
给作业步骤命名为&步骤1&。 选择类型,所谓的作业子系统(这里我们保持默认,T-SQL )。输入的简单命令会在master数据库,例如SELECT * FROM sys.tables。点击【分析】按钮验证下你输入的语句是否正确,会弹出如插图2所示的对话框。如果你语句有错误,会弹出如插图3所示的对话框。尽管这个错误看起来复杂,真正的错误在对话框的底部,语法错误。你可以点击左下脚的第3个按钮来或获得额外的技术细节,但这个会给你SQL Server管理对象(SMO).net的错误诊断,对你的语法错误没有太多的帮助。
插图2:T-SQL成功分析
插图3:T-SQL语句检测到错误
一旦T-SQL分析成功,点击对话框的【高级】页,如插图4所示。
插图4:作业步骤对话框的【高级】页。
作业步骤对话框的高级页是SQL Server代理工作流发生的地方。当作业步骤成功时,你必须选择应该发生的操作(&成功时要进行的操作&),同样也有如果作业步骤失败时要进行的操作。对于作业成功,你有三个选项:
转到下一步:这是默认的行为。在这个作业步骤里一切正常的话,继续下一步。如果这个作业是最后一步,退出作业报告步骤的累积结果(如果某个步骤失败但工作流继续,还是报告失败)。
退出报告成功的作业:如果这一步成功,退出作业立即报告它成功完成。例如,如果作业是由SQL Server代理警报执行,修复可能需要多个作业步骤,如果前面的步骤完成,你可以选择这个选项来退出并报告自动修复完成。
退出报告失败的作业:如果因为某些原因你要退出作业并报告作业失败(例如有一个错误的测试条件),你可以选择这个选项。通常应该有类似的作业警报设置为任何必要的后续。接下来,你可以选择作业失败后重试作业步骤(不报错误)。例如,如果你知道一些阻塞可能会导致你的作业步骤失败,你可以指定步骤尝试2次,一次一分钟(重试次数:2,重试间隔(分钟):1)。
失败时要执行的操作,和上面所述的成功操作有同样的选择,但默认是退出报告失败作业。因为这个作业是T-SQL类型,你可以指定一个输出文件存储
查询的结果。你可能还会勾选&将输出追加到现有文件&,这样你就不会失去以前的结果,但是你需要创建一个进程定期截断文件,那样它就不会消耗你所有的磁盘
空间。或者,你可以将查询结果保存到数据库的一个表中。第三个选项,在历史记录中包含步骤输出,将存储在
msdb.dbo.sysjobhistory(原文说保存在msdb.dbo.sysjobstepslogs,但查看数据表中没记录)。忽视&作为以
下用户运行&选项,我们将会在后面看到。单击&确定&,你现在添加一个作业步骤。单击&确定&,你现在有了一个作业。重新打开&Steps
Example&作业(即右键点击作业菜单选择属性),浏览到作业步骤,点击新建,添加第二个作业步骤。在这一步中,称之为&步骤2&,作业类型选择
&PowerShell&,然后输入以下PowerShell脚本来看看服务器操作系统属性(插图5)。
1 Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\msdb
2 Get-Item . | Get-Member -Type Properties
插图5:添加一个PowerShell步骤到作业
这个作业步骤点击高级页面并选中&在历史记录中包含步骤输出&,因此你可以看到PowerShell脚本运行和查看结果。单击确定,然后再次单击OK,你会看到插图6。因为作业中步骤1在运行后,退出报告作业成功,那么步骤2永远不会运行。
插图6:警告作业流步骤可能有问题
选择【否】,导航到第一个作业步骤的高级页面,更改"成功时要执行的操作"到&转到下一步&。你可能已经注意到一些事情。第一,你没有选择"退出报告成功 的作业"选项-这是怎么发生的呢?当你创建了第一个作业步骤,然后创建作业,只有一个单一的作业步骤,所以SSMS帮你退出并更改了成功的操作。当你在添 加第二步骤,你需要手动调整业务流。每次增加额外的步骤,都需要返回和编辑作业。第二件让你注意的事情是,在这个对话框你也可以直接导航到各个步骤(插图7)。你不必转到下一步。你可以想象一个有10步的作业,并根据你的作业步骤的结果,跳到一个不同的步骤。这样你可以在作业中创建更复杂的工作流程。
插图7:调整作业步骤1的工作流到下一个作业步骤
点击【确定】,那么在作业运行的时候,第二个步骤就会被执行了。现在,运行作业(SSMS中右键单击作业并选择【开始作业步骤&】,然后单击【开始】。一旦工作成功完成后,再次右键单击作业选择【查看历史记录】,你可以在历史作业步骤中看到输出结果(插图8)。
插图8:在SQL Server代理作业历史记录里查看作业步骤历史
SQL Server代理作业安全
当你创建步骤的类型为PowerShell,你可能已经注意到,作业步骤的常规页面的"运行身份"选项是可用的,&SQL Server代理服务帐户&被选。当T-SQL作业连接到SQL Server,它作为SQL Server代理服务的一部分,并将用服务帐户运行。当其他子系统的运行作业(如PowerShell、操作系统(CmdExec)、ActiveX)他 们实际上在Windowsw创建一个单独的进程,然后连接到SQL Server或操作系统。这个过程需要有一个安全上下文运行在Windows,你可以在"运行身份"选项选择安全上下文。在本系列文章的第十篇我们将检查 代理帐户,并详述如何为作业步骤选择不同的安全上下文。你可能会问,T-SQL类型步骤的高级选项页面下的"作为以下用户运行"。如果一个SQL
Server代理作业的所有者是sysadmin服务器角色的成员,那么T-SQL作业步骤可以运行在不同的数据库用户的上下文,你可以在这里选择用户。
如果作业的所有者不是sysadmin服务器角色的成员,此选项将不可用,作业步骤在作业的所有者的安全上下文运行。此选项仅可用于T-SQL子系统,代
理帐户必须用于其他作业子系统。
SQL Server代理作业步骤可以在单一的作业提供复杂的工作流。你可以转到前面,或跳过作业步骤,或退出作业在成功/失败时。每个作业步骤相对其他步骤是一种完全不同的作业项目,对作业步骤日志结果有多种选择。现在,你可以创建有趣的作业然后运行,下一步将监视作业正在运行和已运行的历史记录。因此,我们下一篇将查看作业活动监视器。
原文链接:
阅读(...) 评论()易语言操作SQL&Server数据库全过程
第一步,首先需要建立一个数据库。以建立一个员工表为例,各字段如下:
员工ID&&&&&&&&
登陆帐号&&&&&
&nvarchar 30 1
密码&&&&&&&&&&
nvarchar 15 1
所属部门&&&&&&
nvarchar 30 1
姓名&&&&&&&&&&
nvarchar 10 1
性别&&&&&&&&&
&nvarchar 2 1
年龄&&&&&&&&&&
nvarchar 10 1
当前职务&&&&&&
nvarchar 10 1
级别&&&&&&&&&&
nvarchar 10 1
出生日期&&&&&&
nvarchar 40 1
专业&&&&&&&&&&&nvarchar
学历&&&&&&&&&&
nvarchar 8 1
婚姻状况&&&&&&
nvarchar 4 1
身份证号&&&&&&
nvarchar 17 1
籍贯&&&&&&&&&&
nvarchar 50 1
毕业院校&&&&&&
nvarchar 50 1
兴趣爱好&&&&&&
nvarchar 600 1
电话&&&&&&&&&&
nvarchar 11 1
家庭成员&&&&&&
nvarchar 20 1
工作经历&&&&&&
nvarchar 600 1
销售行业经验&& nvarchar 600 1
离职原因&&&&&&
nvarchar 600 1
升迁记录&&&&&&
nvarchar 600 1
调岗记录&&&&&&
nvarchar 600 1
特殊贡献&&&&&&
nvarchar 600 1
奖励记录&&&&&&
nvarchar 600 1
处罚记录&&&&&
&nvarchar 600 1
同事关系&&&&&&
nvarchar 4 1
企业忠诚度&&&&
nvarchar 4 1
入司日期&&&&&
&nvarchar 30 1
在职状态&&&&&&
nvarchar 4 1
上级评语&&&&&&
nvarchar 600 1
最后登陆时间&& nvarchar 20 1
登陆次数&&&&&&
nvarchar 50 1
照片&&&&&&&&&&
image 16 1
一般我习惯用nvarchar,因为这是可变长的的非Unicode数据,最大长度为8000个字符,您可以根据您的情况来设定,我这里只是举例说明。
第二步:在易言语中建立数据库连接,用外部数据库控件,可先建立4个全局变量:
1、建立全局变量:
&&& .全局变量
服务器, 文本型
&&& .全局变量
服务器数据库, 文本型
&&& .全局变量
服务器用户名, 文本型
&&& .全局变量
服务器密码, 文本型
2、给变量赋值:
服务器 = 读配置项 (取运行目录 () + “\sys.ini”, “server
info”, “server”, “您的服务器地址”)
服务器用户名 = 读配置项 (取运行目录 () + “\sys.ini”, “server info”, “uid”,
“您的服务器用户名”)
服务器密码 = 读配置项 (取运行目录 () + “\sys.ini”, “server info”, “pwd”,
“您的服务器密码”)
服务器数据库 = 读配置项 (取运行目录 () + “\sys.ini”, “server info”, “database”,
“您的数据库名城”)
3、然后建立外部数据库的连接。
如果真 (外部数据库1.打开 (“DRIVER=SQL SSERVER=”
+服务器 + “;UID=” + 服务器用户名 + “;PWD=” + 服务器密码 + “;WSID=” + 服务器 +
“;DATABASE=” + 服务器数据库, ) = 真)
如果真 (外部数据库1.打开SQL数据库 (服务器, 服务器用户名, 服务器密码, 服务器数据库, , )
信息框 (“打开数据库失败”, #警告图标, )
如果真结束
到此,您已经完成了与SQL数据库的连接,可以开始使用。
以下讲讲在数据库中要到的增加、查询、修改、删除命令:
建立全局变量:
&&& .全局变量
脚本, 文本型
&&& .全局变量
记录集句柄
SQL增加语句的使用:&&&
脚本 = “insert into 员工表
([姓名],[性别],[年龄],[出生日期],[专业],[学历],[婚姻状况],[身份证号],[籍贯],[毕业院校],[兴趣爱好],[电话],[家庭成员],[工作经历],[销售行业经验],[离职原因],[所属部门],[当前职务],[升迁记录],[调岗记录],[特殊贡献],[奖励记录],[处罚记录],[同事关系],[企业忠诚度],[入司日期],[在职状态],[上级评语],[照片])
values ('” + 编辑框_职员信息_姓名.内容 + “','” + 编辑框_职员信息_性别.取项目文本
(编辑框_职员信息_性别.现行选中项) + “','” + 编辑框_职员信息_年龄.内容 + “','”
+编辑框_职员信息_出生日期.内容 + “','” + 编辑框_职员信息_专业.内容 + “','”
+组合框_职员信息_学历.取项目文本 (组合框_职员信息_学历.现行选中项) + “','” +
组合框_职员信息_婚姻状况.取项目文本 (组合框_职员信息_婚姻状况.现行选中项) + “','” +
编辑框_职员信息_身份证号.内容 + “','” +编辑框_职员信息_籍贯.内容 + “','” + 编辑框_职员信息_毕业院校.内容
+ “','” +编辑框_职员信息_兴趣爱好.内容 + “','” + 编辑框_职员信息_电话.内容 + “','”
+编辑框_职员信息_家庭成员.内容 + “','” + 编辑框_职员信息_工作经历.内容 + “','”
+编辑框_职员信息_销售行业经验.内容 + “','” + 编辑框_职员信息_离职原因.内容 + “','”
+编辑框_职员信息_所属部门.内容 + “','” + 编辑框_职员信息_当前职务.内容 + “','”
+编辑框_职员信息_升迁记录.内容 + “','” + 编辑框_职员信息_调岗记录.内容 + “','”
+编辑框_职员信息_特殊贡献.内容 + “','” + 编辑框_职员信息_奖励记录.内容 + “','” + 处罚记录编辑框.内容 +
“','” + 组合框_职员信息_同事关系.取项目文本 (组合框_职员信息_同事关系.现行选中项) + “','”
+组合框_职员信息_企业忠诚度.取项目文本 (组合框_职员信息_企业忠诚度.现行选中项) + “','”
+编辑框_职员信息_入司日期.内容 + “','” + 组合框_职员信息_在职状态.取项目文本
(组合框_职员信息_在职状态.现行选中项) + “','” + 编辑框_职员信息_上级评语.内容 +
.如果 (SQL数据库.执行 (脚本, 照片图片框.图片)
信息框 (“保存员工信息成功!”, 0, )
信息框 (“保存员工信息失败!”, 0, )
SQL数据库.关闭记录集 (记录集句柄)
需要注意的是,在上面红色部分有个?,这是保存图片的字段,在蓝色部分可以看见,(SQL数据库.执行 (脚本, 照片图片框.图片)
照片图片框.图片是字节集数据,也就是数据库中对应的照片字段,image类型
2、 SQL查询语句的使用:
脚本 = “select 员工ID,姓名 from 员工表 where 姓名” +
“= ” + “'” + 编辑框_职员信息_姓名.内容 + “'”
记录集句柄 = SQL数据库.查询 (脚本)
.如果真 (编辑框_职员信息_姓名.内容 = SQL数据库.读 (记录集句柄,
“姓名”))
信息框 (“您要录入的员工姓名:” + 编辑框_职员信息_姓名.内容 +
“已经存在!”, 0 + #询问图标, “销售管理系统提醒您!”)
.如果真结束
SQL数据库.关闭记录集 (记录集句柄)
以上是查询的时候,需要注意的是,如果是文本型数据,需要用单引号,红色部分样式,
如果需要多表查询,select可以这样写:,
select A.*,B.* from A,B where
介绍一个小技巧,如果您SQL数据库操作的很熟悉,可以用视图来帮您建立多表的查询,如果把视图里的SQL语句稍微改动一下就可以放到易语言中使用了,
如我这里需要把客户表与其他的表关联,用视图得到的SQL语句是这样的:
SELECT dbo.客户表.客户ID, dbo.客户表.客户姓名,
dbo.客户表.身份证号,
dbo.客户表.客户等级, dbo.客户表.性别, dbo.客户表.年龄,
dbo.客户表.电话,
dbo.客户表.手机, dbo.客户表.电子邮件,
dbo.客户表.联系地址,
dbo.员工资料.姓名 AS 销售顾问, dbo.客户表.拜访时间,
dbo.客户进程表.回访次数,
dbo.客户进程表.意向房号, dbo.客户进程表.接待人员,
dbo.客户进程表.主要问题,
dbo.客户进程表.跟踪次数, dbo.客户进程表.跟踪人员,
dbo.客户进程表.付款金额,
dbo.客户进程表.预订日期, dbo.客户进程表.首付日期,
dbo.客户进程表.预订金额,
dbo.客户进程表.退定时间, dbo.客户进程表.退定原因,
dbo.客户进程表.收款人,
dbo.客户进程表.备注
FROM dbo.员工资料 INNER JOIN
dbo.客户表 ON dbo.员工资料.员工ID = dbo.客户表.员工ID
INNER JOIN
dbo.客户进程表 ON dbo.客户表.客户ID =
dbo.客户进程表.客户ID
修改成我们要在易语言中使用的SQL语句就应该写成这样:
SELECT客户表.客户ID,客户表.客户姓名,客户表.身份证号,客户表.客户等级,客户表.性别,客户表.年龄,客户表.电话,客户表.手机,客户表.电子邮件,客户表.联系地址,员工资料.姓名
销售顾问,客户表.拜访时间,客户进程表.回访次数,客户进程表.意向房号,客户进程表.接待人员,客户进程表.主要问题,客户进程表.跟踪次数,客户进程表.跟踪人员,客户进程表.付款金额,客户进程表.预订日期,客户进程表.首付日期,客户进程表.预订金额,客户进程表.退定时间,客户进程表.退定原因,客户进程表.收款人,客户进程表.备注
FROM 员工表,客户表 ,客户进程表
WHERE 员工资料.员工ID =客户表.员工AND 客户表.客户ID
=客户进程表.客户ID
细心的读者应该可以看到,把上面的DBO,全部取消了,后面多加了一个WHERE和AND语句,只要大家多动动脑,复杂的语句也可以用SQL
Server数据库来为我们完成。
3、 SQL修改语句的使用:
SQL数据库.关闭记录集 (记录集句柄)
.判断开始 (选定项目2 = 1)
脚本 = “update 员工表 set ” + 选定项目1 + “='”
+删首尾空 (新员工名称编辑框.内容) + “', 备注” + “='” + 删首尾空 (备注编辑框.内容) + “' where ”
+ 选定项目1 + “='” + 项目文本1 + “'”
.判断 (选定项目2 = 2)
脚本 = “update 员工表 set ” + 选定项目1 + “='”
+删首尾空 (新员工名称编辑框.内容) + “', 备注” + “='” + 删首尾空 (备注编辑框.内容) + “' where ”
+ 部门编号1 + “= ” + “'” + “1” + “' and ” + 选定项目1 + “='” + 项目文本1 +
.判断开始 (SQL数据库.执行 (脚本, ) = 真)
部门管理窗口.读取并显示当前记录集 ()
SQL数据库.关闭记录集 (记录集句柄)
信息框 (“修改员工姓名失败!”, #警告图标, )
上面用了一个判读语句,用来选择要使用的SQL语句,第一个脚本是直接修改员工的名字,第二个脚本是修改某个部门下的员工的名字,必须是在那个部门下的人员才可以修改。相信大家应该可以看得明白。
4、 SQL删除语句的使用:
脚本 = “delete from 员工表 where ” + 选定姓名1 +
“='” + 姓名 + “' and 员工ID=’”+取得的ID+”’”
.判断开始 (SQL数据库.执行 (脚本, ) = 真)
信息框 (“删除员工成功!”, #信息图标, )
员工管理窗口.读取并显示当前记录集 ()
SQL数据库.关闭记录集 (记录集句柄)
信息框 (“删除员工失败!”, #警告图标, )
上面出现的 选定姓名1、
姓名、取得的ID、三个,是我用的临时的变量,是为了从其他地方动态的取得要删除的内容,简化以后得到的SQL语句就是这样。
delete from 员工表 where 员工姓名 = ‘姓名’ and
以上是我目前开发的我们公司的一个销售管理系统的程序,把大家想知道的内容提出来并简化给大家做个参考,源代码我就不送上了,相信大家也应该可以看的明白,由于工作一直比较忙,没有截图,也没有细心整理,不过语句都没有错误的,大家放心使用,等有时间给大家出一个专门操作SQL
Server数据库网络版软件的教程,这里只是简单的操作而已,给初学者一个借鉴。
发布完才发现其中有几个错误的地方,
1、到此,您已经完成了与SQL数据库的连接,可以开始使用,以下讲讲在数据库中要到的增加、查询、修改、删除命令:
后面应该是:以下讲讲数据库中要用到的增加……
2、如我这里需要把客户表与其他的表关联,用视图得到的SQL语句是在于的:
后面应该是:用视图得到的SQL语句是这样的
3、FROM员工表,客户表 ,客户进程表
应该是: FROM 员工表,客户表 ,客户进程表
FRMO与员工表之间加一个空格
____________________________________________________________________________________________________________
数据定义语言(DDL)和数据操作语言(DML)。
  (1) 数据定义语言(DDL)
  数据定义语言用来定义数据库的各级模式。常用关键字有:Create(建立数据表)、Alter(更改数据表)、Drop(删除数据表)。
  建立数据表 
CREATE TABLE table_name(
  column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
  column2 DATATYPE [NOT NULL],
  说明:上面的DATATYPE 指的是字段的类型,NUT NULL 指是否为空,PRIMARY KEY 指本表的主键。
  建立索引
CREATE INDEX index_name ON table_name (column_name)
  说明:为数据表格的某个字段建立索引以增加查询时的速度。
  更改数据表 
ALTER TABLE table_name ADD COLUMN column_name DATATYPE
  说明:增加一个字段。
ALTER TABLE table_name ADD PRIMARY KEY (column_name)
  说明:将某个字段设为主键。
ALTER TABLE table_name DROP PRIMARY KEY (column_name)
  说明:将某个字段的主键定义取消。
  删除数据表
DROP table_name
  DROP index_name
——————————————————————————————————————————————————————————
于ODBC数据源连接文本
  在《外部数据库的连接原理》一讲中我们说过,ODBC提供对多种数据库的支持,如dBase、Access、MS SQL
Server及Oracle,也就是说运用ODBC数据源中所提供的连接代码,我们可以实现对多种数据库的连接。以连接Access数据库为例,ODBC数据源连接文本的格式是:
  “Driver={数据库驱动程序};Dbq=数据库文件;”
  在以上连接文本中,如果数据库跟程序在同一目录下,或者用变量DefaultDir指定了数据库所在目录,则数据库文件可以不用全路径名,如下即可:
  “ODBC;DBQ=MSAccess.Driver={Microsoft Access Driver
(*.mdb)};”
  如下也可:
  “ODBC;DBQ=MSAccess.DefaultDir=d:\Downloads\e21;Driver={Microsoft
Access Driver (*.mdb)};”
  如果数据库跟程序不在同一目录下,或者没有用变量DefaultDir指定数据库所在目录,则数据库文件需要用全路径名,如下:
  “ODBC;DBQ=E:\Quake III Arena\MSAccess.Driver={Microsoft
Access Driver (*.mdb)};”
  以上所说的是连接Access数据库的格式,那么连接其他数据库的ODBC数据源连接文本又是怎样的?连接不同类型的数据库要使用不同的对应驱动程序,没忘记吧!不同的驱动程序当然它们的参数组合也就不同了,每一种不同驱动程序都有其特定的的参数形式:
  ⑴、MS Access ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Access Driver (*.mdb)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Access Driver
(*.mdb)};Dbq=c:\somepath\dbname.Uid=APwd= ”
  ⑵、dBase ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft dBASE Driver (*.dbf)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft dBASE Driver
(*.dbf)};DriverID=277;Dbq=c:\somepath\dbname. ”
  ⑶、Oracle ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft ODBC for Oracle}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft ODBC for
Oracle};Server=OracleServer.Uid=Pwd= ”
  ⑷、MS SQL Server DSNless 连接:
  ☆、参数:Driver 设置值:{SQL Server};
  ☆、参数:Server 设置值:服务器名称
  ☆、参数:Database 设置值:数据表名称
  ☆、参数:Uid 设置值:用户名称
  ☆、参数:Pwd 设置值:密码
  ☆、例句:
  “Driver={SQL
Server};Server=Database=Uid=Pwd= ”
  ⑸、MS Text Driver DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Text Driver (*. *.csv)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Text Driver (*.
*.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,Persist
Security Info=F ”
  ⑹、Visual Foxpro DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Visual FoxPro Driver}
  ☆、参数:SourceType 设置值:DBC
  ☆、参数:SourceDB 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Visual FoxPro
Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.Exclusive=No;”
  ⑺、MySQL DSNless 连接:
  ☆、参数:Driver 设置值:{mysql}
  ☆、参数:database 设置值:数据表名称
  ☆、参数:uid 设置值:用户名称
  ☆、参数:pwd 设置值:密码
  ☆、例句:
  “driver={mysql};
database=uid=pwd=option=16386”
*******************************************************************
SQL语言简介
  在上一讲中我们介绍了连接外部数据库的方法,那么连接之后怎样对外部数据库进行读取、显示、增删、更新、查询等操作呢?这些操作需要通过外部数据库等对象调用SQL指令才能完成。
  ㈠、什么是SQL语言
  SQL(Structure Query
Languge,结构化查询语言)是一种数据库专用的计算机语言,不管是Oracle、MS SQL
、Access、MySQL或其他公司的数据库,也不管数据库建立在大型主机或个人计算机上,都可以使用SQL语言来访问和修改数据库的内容。虽然不同公司的数据库软件多多少少会增加一些专属的SQL语法,但大体上,它们还是遵循ASNI(美国国家标准协会)制定的SQL标准。因为SQL语言具有易学习及阅读等特性,所以SQL逐渐被各种数据库厂商采用,而成为一种共通的标准查询语言。只要你学会SQL,即可操作各种数据库如Visual
Foxpro、Access、dBase等等。总之,SQL语言是各种数据库都可以使用的数据库查询语言。
  SQL语言不仅仅具有查询数据库的功能,而且可以对数据库完成选取、增删、更新与跳转等各种操作。
  ㈡、SQL语言的组成
  SQL语言是由命令(函数)、子句、运算符、加总函数及通配符等组成,分述如下:
  1、命令
  SQL的命令可分成数据定义语言与数据操作语言,数据定义语言可用来建立新的数据库、数据表、字段及索引等,本教程不予介绍;另一为数据操作语言,可用来建立查询表、排序、筛选数据、修改、增删等动作。数据定义语言命令常用的有选择、添加、删除和修改这四种:
  ⑴、命令:SELECT
  中文意思:选择
  说明:用于找出合乎条件的记录
  ⑵、命令:INSERT
  中文意思:插入
  说明:用于增加一笔记录或合并两个数据表
  ⑶、命令:UPDATE
  中文意思:更新
  说明:用于更正合乎条件的记录
  ⑷、命令:DELETE
  中文意思:删除
  说明:用于删除合乎条件的记录
  2、子句
  子句是用于设定命令要操作的对象(即参数),SQL所用的子句如下:
  ⑴、子句:FROM
  中文意思:数据表
  说明:用于指定数据表
  ⑵、子句:WHERE
  中文意思:条件
  说明:用于设定条件
  ⑶、GROUP BY
  中文意思:分组(合并)
  说明:用于设定分组
  ⑷、ORDER BY
  中文意思:排序
  说明:用于设定输出的顺序及字段
  3、运算符
  子句参数中的运算符使子句构成不同的语法格式,如“字段1=''100''”、“字段1&''100''”等。运算符又分逻辑运算符与比较运算符。
  ◇逻辑运算符如下:
  ⑴、运算符:AND
  中文意思:并且
  说明:逻辑且
  ⑵、运算符:OR
  中文意思:或者
  说明:逻辑非
  ⑶、运算符:NOT
  中文意思:取反
  说明:逻辑非或逻辑反
  ◇比较运算符如下:
  ⑴、运算符:& 说明:小于
  ⑵、运算符:≤ 说明:小于等于
  ⑶、运算符:≥ 说明:大于等于
  ⑷、运算符:& 说明:大于
  ⑸、运算符:= 说明:等于
  ⑹、运算符:&& 说明:不等于
  ⑺、运算符:BETWEEN 说明:用于设定范围 中文意思:在...之间
  ⑻、运算符:LIKE 说明:用于通配设定 中文意思:如同
  ⑼、运算符:IN 说明:用于集合设定 中文意思:在...之内
  4、加总函数
  加总函数常常运用在命令的参数中,如:“SELECT SUM(数学),AVG(数学) FROM 成绩单”。
  ⑴、加总函数:AVG
  中文意思:平均
  说明:用于求指定条件的平均
  ⑵、加总函数:COUNT
  中文意思:数量
  说明:用于求指定的数量
  ⑶、加总函数:SUM
  中文意思:和
  说明:用于求指定条件的和
  ⑷、加总函数:MAX
  中文意思:最大值
  说明:用于求指定条件的最大值
  ⑸、加总函数:MIN
  中文意思:最小值
  说明:用于求指定条件的最小值
  5、通配符
  ⑴、通配符:% 意义:任何长度的字符串(包括0)
  ⑵、通配符:_ 意义:下划线表示任何一个字符
  ⑶、通配符:[] 意义:中括号表示某个范围内的一个字符
  在下一讲将说明SQL语言是怎样把命令(函数)、子句、运算符、及加总函数等组合在一起的。
*************************************************************************
嵌入式SQL的应用
  SQL语句可以单独在数据库系统本身中执行,但如果运用在其他编程工具所编制的程序中,一般不能单独执行,而要把SQL语句嵌入到高级语言(如易语言)中使用,通过高级语言的命令和方法来调用之,此时SQL称为嵌入式SQL。调用SQL语句的程序称为宿主程序,在易语言中一般是把SQL语句作为宿主程序的唯一参数来直接处理。嵌入式SQL在使用上有一些规定,在易语言中目前的版本规定如下:
  ⑴、在程序中要区分SQL语句和宿主语言的语句。在易语言中好区分,因为SQL语句形式是英文的,而易语言是中文的,但在实际应用时仍然有可能会混乱,所以易语言要把SQL语句转化为文本型才能调用,即嵌入式SQL语句两边要用双引号来标示。
  ⑵、允许SQL语句使用宿主程序的变量,但使用时要将宿主程序的变量跟外部数据库中表格的字段名区别开来,区别方法如下:
  ①、在易语言中要将变量类型转化为文本型变量才能被SQL文本相加使用,比如下面的例子中有一个叫“数字1”的整数类型变量,插入到SQL文本中是这样表达:
  外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + 到文本
  ②、包含字段名的SQL文本两边加双引号,变量名不能在双引号内,如上例。
  ⑶、要将字段名跟字段值区别开来,区别方法如下:
  ①、对于文本类型的字段,在其字段值两边要加上“''”号标示其文本值,代表语法是:字段名称=‘文本值’。如下:
  外部数据库1.查询 (“select * from chj where 姓名=''山大王''”)
  又如下面“查找编辑框.内容”中的字段值是文本型,嵌入式SQL语句如下:
  外部数据库1.查询 (“select * from chj where 姓名==” + “''” + 查找编辑框.内容 +
  ②、对于数字类型的字段,在SQL语句中表示其字段值,两边不加符号标示,代表语法是:字段名称=数字值。如下两例:
  外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=”
+查找编辑框.内容)
  外部数据库1.查询 (“select * from chj where 学号=17”)
  ③、对于日期时间类型的字段,在其字段值两边要加上“#”号标示其时间值,代表语法是:字段名称=#时间值#。如下两例:
  外部数据库1.查询 (“select * from chj where 入学时间 BETWEEN ##
  外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + “#”
+查找编辑框.内容 + “#”)
  ④、也可以将SQL语句中的字段名(尤其是中文名)可用中括号括住,如:[字段名]。
  ⑷、SQL语句要用半角输入法输入,否则可能会出错。
  那么在易语言中怎样调用SQL语句呢?一般是在外部数据库对象(控件)的方法中调用,试概括如下:
  ⑴、对外部数据库进行查询的方法。
  对外部数据库的查询就是在对外部数据库不加编辑改动的前提下,只通过记录集来对数据库进行显示、查询、筛选、排序和记录集的合并等操作。
  所有查询类的方法起源于下面这个语句,其他查询类语句是对这个语句的调用(将此语句作为唯一的参数),该语句如下:
  外部数据库.查询 (查询类SQL语句)
  也可这样表达:
  外部数据库.查询 (“SELECT...FROM...[WHERE]...[GROUP BY]...[ORDER
BY]... ”)
  该方法是对当前被打开数据库进行数据查询,返回的结果称为“记录集句柄”(即记录集的标记)。注意当不再使用此记录集时,必须使用“关闭记录集”将其关闭,如果失败,返回0。在易语言中,将以上语句等同于记录集句柄以作为其他查询类语句的参数。为了使该参数在所有子程序中都能应用,我们一般把它设置为整数型全局变量,并将其值设置如下:
  记录集句柄=外部数据库.查询 (查询类SQL语句)
  由于易语言要把SQL语句转化为文本型才能调用,所以嵌入式SQL语句两边要有双引号,例句:
  记录集句柄 = 外部数据库1.查询 (“select * from chj ”)
  ※ “chj”是外部数据库中一个表的名称
  又如,欲得到排序的记录集,应象下面这样赋值:
  记录集句柄 = 外部数据库1.查询 (“SELECT * FROM chj ORDER BY 语文 DESC”)
  现将外部数据库控件中其他的查询类方法列举如下:
  ①、外部数据库.重新查询 (记录集句柄) 即:
  外部数据库.重新查询 (外部数据库.查询 (查询类SQL语句))
  例句:外部数据库1.重新查询 (外部数据库1.查询 (“select * from chj ”))
  ②、外部数据库.首记录前 (记录集句柄) 即:
  外部数据库.首记录前 (外部数据库.查询 (查询类SQL语句))
  例句:外部数据库1.首记录前 (记录集句柄)
  ③、外部数据库.尾记录后 (记录集句柄)
  ④、外部数据库.到首记录 (记录集句柄)
  ⑤、外部数据库.到尾记录 (记录集句柄)
  ⑥、外部数据库.到前一记录 (记录集句柄)
  ⑦、外部数据库.到后一记录 (记录集句柄)
  ⑧、外部数据库.读 (记录集句柄,字段名称或位置)
  例句:语文编辑框.内容 = 到文本 (外部数据库1.读 (记录集句柄, “语文”))
  ⑵、对外部数据库进行编辑的方法。
  所谓对外部数据库的编辑,就是变更改动外部数据库本身,包括添加、更新、删除等,对数据库进行编辑不必通过记录集。所有非查询类SQL语句都嵌入下面这个语句来执行:
  外部数据库.执行 (非查询类SQL语句)
  ①、添加记录,其语法如下:
  外部数据库.执行 (“insert into 表名称(字段1,字段2...) values (字段值1,字段值2...)
  例句:
  外部数据库1.执行 (“INSERT INTO chj ” + “(学号,姓名,语文,数学,英语)” + “ valueS ” +
“(” + 学号编辑框.内容 + “,''” + 姓名编辑框.内容 + “'',''” + 语文编辑框.内容 + “'',''”
+数学编辑框.内容 + “'',''” + 英语编辑框.内容 + “'')”)
  ②、更新记录,其语法如下:
  外部数据库.执行 (“UPDATE 表名称 SET 字段1=字段值1,字段2=字段值2...WHERE 条件式”)
  例句:
  外部数据库1.执行 (“UPDATE chj SET 学号=” + “''” + 学号编辑框.内容 + “'',” + “姓名=”
+ “''” + 姓名编辑框.内容 + “'',” + “语文=” + “''” + 语文编辑框.内容 + “'',” + “数学=”
+ “''” + 数学编辑框.内容 + “'',” + “英语=” + “''” + 英语编辑框.内容 + “'' ” +
“WHERE 姓名=” + “''” + 姓名1 + “'' ” + “AND 语文=” + 语文1 + “AND 数学=” +数学1
+ “AND 英语=” + 英语1 + “AND 学号=” + 学号1)
  ③、删除记录,其语法如下:
  外部数据库.执行 (“DELETE * FROM 表名称 WHERE 条件式”)
  例句:
  外部数据库.执行 (“外部数据库1.执行 (“DELETE * FROM chj ” + “WHERE 姓名=” + “''”
+姓名1 + “'' ” + “AND 语文=” + 语文1 + “AND 数学=” + 数学1 + “AND 英语=” + 英语1
+ “AND 学号=” + 学号1)”)
===================================================================================================================
一.sql语句中没有使用表的相互关联(简单的查询语句)
设计一个DataSet
1) 右击“解决方案浏览器”,选择“添加”--“添加新项”--&“数据集”
2) 从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)
3) 此时在数据集中就会有一个Stores表的结构图。xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面
创建一个.rpt文件crystalreport1.rpt同时将其指定给上一步建立的DataSet。
4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5)建立.rpt文件之后,右击“详细资料”--&"添加/删除数据库“
在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"DataSet1“,选择”Stores“表。
7) 将”Stores"表添加到“选定的表”中,点击“OK”
8) 建立一个WebForm1.aspx 拖入一个Crystal Report Viewer 控件
9)WebForm1.aspx.cs
ReportDocument oRpt = new ReportDocument();
string RptDir="f:\\bbs\\test\\crystal\\crystalreport1.rpt";
oRpt.Load(RptDir);
...//根据sql语句得到DataSet 这个就不多说了
oRpt.SetDataSource(ds);
CrystalReportViewer1.ReportSource=oR
//注意push模式用不到设置logOnInfo参数
====================================================================================================================
SQL语句的数据库连接
15:25:19.0
SQL语句可以单独在数据库系统本身中执行,但如果运用在其他编程工具所编制的程序中,一般不能单独执行,而要把SQL语句嵌入到高级语言(如易语言)中使用,通过高级语言的命令和方法来调用之,此时SQL称为嵌入式SQL。调用SQL语句的程序称为宿主程序,在易语言中一般是把SQL语句作为宿主程序的唯一参数来直接处理。嵌入式SQL在使用上有一些规定,在易语言中目前的版本规定如下:
⑴、在程序中要区分SQL语句和宿主语言的语句。在易语言中好区分,因为SQL语句形式是英文的,而易语言是中文的,但在实际应用时仍然有可能会混乱,所以易语言要把SQL语句转化为文本型才能调用,即嵌入式SQL语句两边要用双引号来标示。
⑵、允许SQL语句使用宿主程序的变量,但使用时要将宿主程序的变量跟外部数据库中表格的字段名区别开来,区别方法如下:
①、在易语言中要将变量类型转化为文本型变量才能被SQL文本相加使用,比如下面的例子中有一个叫“数字1”的整数类型变量,插入到SQL文本中是这样表达:
外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + 到文本
②、包含字段名的SQL文本两边加双引号,变量名不能在双引号内,如上例。
⑶、要将字段名跟字段值区别开来,区别方法如下:
①、对于文本类型的字段,在其字段值两边要加上“''”号标示其文本值,代表语法是:字段名称=‘文本值’。如下:
外部数据库1.查询 (“select * from chj where 姓名=''山大王''”)
又如下面“查找编辑框.内容”中的字段值是文本型,嵌入式SQL语句如下:
外部数据库1.查询 (“select * from chj where 姓名==” + “''” + 查找编辑框.内容 +
②、对于数字类型的字段,在SQL语句中表示其字段值,两边不加符号标示,代表语法是:字段名称=数字值。如下两例:
外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=”
+查找编辑框.内容)
外部数据库1.查询 (“select * from chj where 学号=17”)
③、对于日期时间类型的字段,在其字段值两边要加上“#”号标示其时间值,代表语法是:字段名称=#时间值#。如下两例:
外部数据库1.查询 (“select * from chj where 入学时间 BETWEEN ## and
外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + “#”
+查找编辑框.内容 + “#”)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 sql server下载步骤 的文章

 

随机推荐