在C#中从Oracle数据库select 100条数据,是用存储过程快,还是C# sql语句快

孙大诚_SunRobin 2016-10-21 03:05:21
现在的需求很简单,从Oracle数据库中根据一定的参数检索数据。这里有2个选择,一个是直接在C#中写SQL语句,另一个是C#调用数据库上的存储过程。

个人根据第二种方式快一些,是这样的吗?有人能解释一下为什么吗?
...全文
702 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
老衲是光头 2016-10-24
  • 打赏
  • 举报
回复
引用 15 楼 sundacheng1989 的回复:
[quote=引用 13 楼 sp1234 的回复:] 如果你写 select * from tabel where field_a > 1 跟 select * from tabel where field_a > 100 在SQL Server中,虽然常量改变了,后者也会自动使用前者的编译结果(常量可为变量)。只不过在系统启动之后,也许第一次出现那个 sql 查询时需要(瞬间)编译和分析一下,但并不是只有存储过程才嫩保存编译结果,普通的 sql 查询语句的编译结果也是缓存的数据库中的。
多谢多谢。 现在还有一个问题,就是比如说100万条数据放到数据库中,用C#的话,用sqlcommand,是把100万个insert语句拼成一个字符串,还是foreach一下,每个insert语句放到一个command中去执行,然后执100万次,这样是不是差别会很大?[/quote] 100万个insert语句?你百度一下SqlBulkCopy类,批处理添加的。
孙大诚_SunRobin 2016-10-23
  • 打赏
  • 举报
回复
引用 13 楼 sp1234 的回复:
如果你写 select * from tabel where field_a > 1 跟 select * from tabel where field_a > 100 在SQL Server中,虽然常量改变了,后者也会自动使用前者的编译结果(常量可为变量)。只不过在系统启动之后,也许第一次出现那个 sql 查询时需要(瞬间)编译和分析一下,但并不是只有存储过程才嫩保存编译结果,普通的 sql 查询语句的编译结果也是缓存的数据库中的。
多谢多谢。 现在还有一个问题,就是比如说100万条数据放到数据库中,用C#的话,用sqlcommand,是把100万个insert语句拼成一个字符串,还是foreach一下,每个insert语句放到一个command中去执行,然后执100万次,这样是不是差别会很大?
孙大诚_SunRobin 2016-10-23
  • 打赏
  • 举报
回复
引用 10 楼 caozhy 的回复:
100个数据没有什么区别。好比理论上北边更冷,但是在一个操场上,你站在哪里温度其实都差不多。
那个100个我举例子的时候考虑的有点不周到,其实真实情况是要从Excel读取100万条数据放到Oracle的数据库中。
  • 打赏
  • 举报
回复
如果你写 select * from tabel where field_a > 1 跟 select * from tabel where field_a > 100 在SQL Server中,虽然常量改变了,后者也会自动使用前者的编译结果(常量可为变量)。只不过在系统启动之后,也许第一次出现那个 sql 查询时需要(瞬间)编译和分析一下,但并不是只有存储过程才嫩保存编译结果,普通的 sql 查询语句的编译结果也是缓存的数据库中的。
  • 打赏
  • 举报
回复
至少对于 SQL Server 来讲,普通的 sql 语句也照样需要编译,而其编译步骤也会被缓存。换句话说,别说完全同样地 sql 语句了,就算不是条件查询sql语句,就算是 where 条件中的常量改变了,SQL Server 也一样是会重复使用之前的编译规划的,并不需要重新编译、重新分析优化。 要知道大型的商品化系统,都是千锤百炼地针对长期使用的测试用例进行了优化的,不像一些小的个人开发的数据库系统样考虑的测试用例仅仅是很简单的应用需求。对于”重用编译和规划策略“的问题,并不是仅仅对存储过程才会重用编译和规划。 这个问题其实就跟“用c#还是用c(不是c++/CLI)编程更快一样,我们可以说后者理论上似乎总是要”更快“的。那么为什么不用c、不用dos 下汇编去编程,而要用 .net 下的 c# 编程呢?
隔壁黎叔叔 2016-10-22
  • 打赏
  • 举报
回复
如果是很简单的SQL的话,我觉得SQL编译和存储过程第一次编译的时间估计不会相差太大。而查询的时间应该是一样的,不存在什么效率的问题,毕竟只是形式不一样而已。快慢产生的地方主要应该是在编译和交互的过程。 而第二次以后应该就是存储过程比较快了。 因为从存储过程的定义来看:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译。
threenewbee 2016-10-21
  • 打赏
  • 举报
回复
100个数据没有什么区别。好比理论上北边更冷,但是在一个操场上,你站在哪里温度其实都差不多。
水哥阿乐 2016-10-21
  • 打赏
  • 举报
回复
我敢说差别不大,你想查某个表时,就算用存储过程中不也是要写的select语句吗? 你要条件查询不管那种方式你得向数据库传递参数.至于那边快些只能说代码质量问题. 存储过程接受一个参数能办到的换个方法你这边sqlcommand就没必要向数据库传二个参数, 与其把注意力放在这个上面纠结不如放在代码优化和数据库优化上面
  • 打赏
  • 举报
回复
如果你有很多条语句,那么编写为一个存储过程来进行复杂的数据计算操作从理论上来说是比从客户端发送多条独立的查询语句要快。 但是具体你的程序是否使用存储过程快,你应该自己写一个测试来记录一下执行时间。一般来说,当你写的查询并不是“一大堆查询”,那么其实可能没有多大价值去写存储过程。要知道一个系统中维系几百个存储过程的修改(需要打开数据库工具去维护几百个过程,进行一些修改调试,然后再重新回到c#程序来启动),是很烦人的,不如直接了当地修改c#源程序更简单直接。
SoulRed 2016-10-21
  • 打赏
  • 举报
回复
查询语句非常复杂的时候存储过程可能会快点,但不是一定比直接写SQL快。具体实际效果建议你测试下,毕竟只有测试才是最能体现事实的
闭包客 2016-10-21
  • 打赏
  • 举报
回复
sql server 的话,存储过程可以保证重用执行计划。 大的差别就这一点。
孙大诚_SunRobin 2016-10-21
  • 打赏
  • 举报
回复
楼上说的都很对,确实是数据量大的时候应该用存储过程。 如果单个的插入的话,对于每一次插入操作,C#代码与远端的数据库服务器都会有一次通信,也就是C#发个message过去,返回一个执行结果回来。这叫一个round trip. 需要消耗network与CPU。如果数据量非常庞大,几十万条的时候,会比较明显。 如果使用ODP.NET BULK INSERT与存储过程相结合,这个会非常的高效率。 这是从官网查到的:http://www.oracle.com/technetwork/issue-archive/2009/09-sep/o59odpnet-085168.html
EnForGrass 2016-10-21
  • 打赏
  • 举报
回复
如果参数比较多,还是建议用存储过程
  • 打赏
  • 举报
回复
纠结这差值以ms为单位的有意思么……
圣殿骑士18 2016-10-21
  • 打赏
  • 举报
回复
如果sql是一条,就是一样快。如果sql语句是多条,就是存储过程快。
Poopaye 2016-10-21
  • 打赏
  • 举报
回复
存储过程难道是什么很特别的过程吗?
以SQL Server为工具,讲解SQL语言的应用,提供了近500个曲型应用,读者可以随查随用,深入讲解SQL语言的各种查询语句,详细介绍数据设计及管理,详细讲解存储过程、解发器和游标等知识,讲解了SQL语言在高级语言的具体应用。 第1章 SQL语言的概述 1.1 认识SQL语言 1.1.1 什么是SQL语言 1.1.2 SQL的历史与发展 1.1.3 SQL的功能和优点 1.2 认识数据 1.2.1 什么是数据 1.2.2 数据系统的结构 1.2.3 数据系统的工作流程 1.2.4 常见的SQL数据管理系统 1.3 数据模型 1.3.1 关系数据模型 1.3.2 数据模型的构成 1.3.3 常见的数据模型 1.4 关系型数据 1.4.1 关系型数据的定义 1.4.2 关系型数据与表 1.4.3 主键与外键 1.4.4 字段约束 1.4.5 数据的完整性 1.4.6 关系数据设计原则 1.5 SQL开发环境 1.5.1 SQL环境介绍 1.5.2 SQL的层次结构 1.5.3 SQL环境的对象 1.5.4 SQL环境的程序系统 1.6 SQL语句基础 1.6.1 SQL常量 1.6.2 SQL表达式 1.6.3 SQL数据类型 1.6.4 注释符 1.6.5 批处理 1.6.6 SQL语句的执行 1.7 SQL语法知识 1.7.1 SQL语法结构 1.7.2 常用的SQL语句 1.8 小结第2章 设计数据 2.1 设计数据基础 2.1.1 数据设计定义 2.1.2 设计数据的意义 2.1.3 进行数据设计的方法 2.2 数据实体和联系 2.2.1 实体、属性与联系 2.2.2 一对一联系 2.2.3 一对多联系 2.2.4 多对多联系 2.3 规范化准则 2.3.1 范式 2.3.2 第一范式 2.3.3 第二范式 2.3.4 第三范式 2.3.5 第四范式 2.4.小结第2篇 数据管理篇第3章 数据的相关操作 3.1 创建数据 3.1.1 SQL标准创建数据的语法 3.1.2 使用SQL语句创建数据 3.2 删除数据 3.2.1 SQL标准删除数据的语法 3.2.2 使用SQL语句删除数据 3.3 修改数据 3.3.1 修改数据语法 3.3.2 使用SQL语句修改数据 3.4 管理数据 3.4.1 扩充与压缩数据 3.4.2 导入与导出数据 3.4.3 数据的备份与恢复 3.4.4 使用sp_helpdb查看数据信息 3.5 小结第4章 数据表的相关操作 4.1 SQL数据表 4.1.1 数据表的结构 4.1.2 数据表的种类 4.2 创建数据表 4.2.1 创建数据表的语句结构 4.2.2 创建基本表 4.2.3 非空约束 4.2.4 DEFAULT指定缺省值 4.3 修改数据表 4.3.1 修改数据表的语句结构 4.3.2 给数据表增添新列 4.3.3 修改数据的列 4.3.4 删除数据的列 4.4 数据表的删除 4.4.1 删除数据表的语句结构 4.4.2 使用SQL语句删除数据表 4.5 数据表的重命名 4.5.1 重命名数据表的语句 4.5.2 使用SQL语句重命名数据表 4.6 小结第5章 索引与视图 5.1 索引的基础知识 5.1.1 索引的概念 5.1.2 索引的类型 5.1.3 索引的结构 5.2 创建索引 5.2.1 创建索引的语句结构 20.3.3 子查询的实现 20.3.4 复合查询的实现 20.4 运算符与表达式的应用 20.4.1 连接数据表的实现 20.4.2 算术运算符的应用 20.4.3 表达式的应用 20.5 数据维护与触发器的应用 20.5.1 添加数据的实现 20.5.2 更新数据的实现 20.5.3 删除数据的实现 20.5.4 在VB.NET应用触发器20.6 小结第21章 VB 6.0与SQL Server的开发与应用 21.1 VB 6.0开发环境 21.1.1 VB 6.0介绍 21.1.2 VB 6.0的版本 21.1.3 VB 6.0开发环境 21.2 VB 6.0连接数据 21.2.1 VB 6.0数据控件介绍 21.2.2 数据连接举例 21.3 数据查询应用 21.3.1 普通数据查询的实现 21.3.2 连接查询的实现 21.3.3 子查询的实现 21.3.4 复合查询的实现 21.4 运算符与表达式的应用 21.4.1 连接数据表的实现 21.4.2 算术运算符的应用 21.4.3 表达式的应用 21.5 数据维护操作的应用 21.5.1 添加数据的实现 21.5.2 更新数据的实现 21.5.3 删除数据的实现 21.6 触发器与存储过程的应用 21.6.1在VB 6.0应用触发器 21.6.2在VB 6.0应用存储过程 21.7 小结第22章 VC++6.0与SQL Server的开发与应用 22.1 VC++6.0开发环境 22.1.1 VC++6.0介绍 22.1.2 MFC编程 22.1.3 VC++6.0开发环境 22.2 VC++6.0连接数据 22.2.1 ADO数据控件介绍 22.2.2 数据连接举例 22.3 数据查询应用 22.3.1 普通数据查询的实现 22.3.2 连接查询的实现 22.3.3 子查询的实现 22.3.4 复合查询的实现 22.4 运算符与表达式的应用 22.4.1 连接数据表的实现 22.4.2 算术运算符的应用 22.4.3 表达式的应用 22.5 数据维护操作的应用 22.5.1 添加数据的实现 22.5.2 更新数据的实现 22.5.3 删除数据的实现 22.6 小结第23章 PHP访问 SQL Server 2005 23.1 PHP开发环境 23.1.1 PHP简介及其特点 23.1.2 PHP开发环境的安装 23.2 PHP连接SQL Server服务器 23.2.1 使用PHP的MSSQL扩展 23.2.2 PHP连接SQL Setver的必要件 23.3 使用PHP存取SQL Server数据 23.3.1 选择操作的数据 23.3.2 在数据创建表 23.3.3 删除存在的数据表 23.4 对数据表的操作 23.4.1 向表添加记录 23.4.2 浏览表记录 23.4.3 修改已有记录 23.4.4 删除指定记录 23.5 可回复留言板的开发(PHP+SQL Server) 23.5.1 数据表的设计 23.5.2 配置文件的创建 23.5.3 创建系统运行的表 23.5.4 创建留言显示模块 23.5.5 创建留言添加模块 23.5.6 进入留言管理模块 23.5.7 创建留言修改模块 23.5.8 创建留言删除模块 23.6 小结 5.2.2 创建非簇索引 5.2.3 创建簇索引 5.2.4 创建惟一索引 5.2.5 创建复合索引 5.3 删除索引 5.3.1 删除索引的语句结构 5.3.2 使用SQL语句删除索引 5.4 视图的基础知识 5.4.1 视图概述 5.4.2 视图的优点与缺点 5.5 视图的基本操作 5.5.1 创建视图的基本语句结构 5.5.2 使用SQL语句创建视图 5.5.3 修改视图的语句结构 5.5.4 重命名视图的名称 5.5.5 使用SQL语句修改视图 5.5.6 删除视图的语句结构 5.5.7 使用SQL语句删除视图 5.6 视图的应用 5.6.1 利用视图简化表的复杂连接 5.6.2 利用视图简化复杂查询 5.7 小结第3篇 SQL查询篇第6章 简单的SELECT语句查询 6.1 查询的基本结构 6.1.1 了解SELECT语句 6.1.2 SELECT语句的语法格式 6.1.3 SELECT语句的执行步骤 6.2 简单的查询语句 6.2.1 查询表指定的字段 6.2.2 查询所有的字段 6.2.3 使用DISTINCT去除重复信息 6.2.4 使用别名 6.3 排序与分组 6.3.1 升序排序与降序排序 6.3.2 多列字段排序 6.3.3 使用GROUPBY子句对查询结果进行分组 6.3.4 HAVING子句的应用 6.4 件查询 6.4.1 WHERE单件语句查询 6.4.2 运算符查询 6.4.3 BETWEEN运算符范围筛选 6.4.4 使用TOP子句 6.4.5 NULL的判断 6.5 模糊查询 6.5.1 使用LIKE运算符进行查询 6.5.2 使用“_”通配符进行查询 6.5.3 使用“%”通配符进行查询 6.5.4 使用“[]”通配符进行查询 6.5.5 使用“[^]”通配符进行查询 6.6 小结第7章 运算符与表达式相关查询 7.1 逻辑运算符 7.1.1 逻辑与运算符 7.1.2 逻辑或运算符 7.1.3 逻辑运算符的组合使用 7.2 IN运算符 7.2.1 IN运算符的使用 7.2.2 NOT IN运算符的使用 7.3 NOT运算符与BETWEEN运算符 7.3.1 N0T运算符的使用 7.3.2 NOT运算符与BETWEEN运算符的组合应用 7.4 数学运算符 7.4.1 数学运算符的种类 7.4.2 数学运算符的应用 7.5 集合查询运算符 7.5.1 UNION运算符 7.5.2 INTERSECT运算符 7.6运算符的组合应用 7.6.1 逻辑运算符与IN运算符的组合应用 7.6.2 逻辑运算符与NOT运算符的组合应用 7.6.3 逻辑运算符与数学运算符的组合应用 7.6.4 逻辑运算符与集合运算符的组合应用 7.6.5 数学运算符与NOT运算符的组合应用 7.6.6 数学运算符与IN运算符的组合应用 7.6.7 数学运算符与集合运算符的组合应用 7.7 SQL的表达式 7.7.1 CAST表达式的应用 7.7.2 CASE表达式的应用 7.8 小结第8章 SQL函数 8.1 SQL函数基础 8.1.1 SQL语句函数 8.1.2 常用的SQL语句函数 8.2 日期函数和数学运算函数 8.2.1 日期时间函数 8.2.2 CONVERT函数转换日期、时间 8.2.3 数据运算函数 8.3 字符串函数 8.3.1 字符串处理函数介绍 8.3.2 字符转换函数 8.3.3 去字符串空格函数 8.3.4 取字符串长度的函数 8.3.5 查询包含部分字符串内容的数据 8.3.6 颠倒字符串的顺序 8.3.7 字符串替换 8.4 聚合函数 8.4.1 聚合函数概述 8.4.2 SUM函数运算 8.4.3 MAX函数运算 8.4.4 MIN函数运算 8.4.5 AVG函数运算 8.4.6 COUNT函数运算 8.4.7 聚合函数的组合使用 8.5 小结第9章 连接查询 9.1 多表连接 9.1.1 多表连接的优点 9.1.2 简单的两表连接 9.1.3 多表连接举例 9.1.4 UNION JOIN连接表 9.2 自连接与自然连接 9.2.1 自连接 9.2.2 自然连接 9.3 内连接 9.3.1 等值连接 9.3.2 不等值连接 9.3.3 使用内连接实现多表连接 9.3.4 在内连接使用聚合函数 9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内连接与左外连接的综合应用 9.6.2 内连接与右外连接的综合应用 9.6.3 UNION集合运算与多表连接应用 9.7 小结第10章 子查询 10.1 子查询的简单应用 10.1.1 子查询概述 10.1.2 在多表查询使用子查询 10.1.3 在子查询使用聚合函数 10.1.4 使用ANY或ALL运算符 10.1.5 使用子查询创建视图 10.2 使用IN语句的子查询 10.2.1 简单的IN语句子查询 10.2.2 使用IN子查询实现集合交运算 lO.2.3 使用IN子查询实现集合差运算 10.3 使用EXISTS语句的子查询 10.3.1 简单的EXISTS语句子查询 10.3.2 使用EXISTS子查询实现两表交集 10.3.3 使用EXISTS子查询实现两表并集 10.3.4 使用NOT EXISTS的子查询 10.4 相关子查询 10.4.1 使用IN引入相关子查询 10.4.2 使用比较运算符引入相关子查询 10.4.3 在HAVING子句使用相关子查询 10.5 UNIQUE子查询与嵌套子查询 10.5.1 UNIQUE子查询 10.5.2 嵌套子查询 10.6 小结第4篇 T-SQL开发常用操作篇第11章 数据的维护操作 11.1 数据的插入操作 11.1.1 INSERT语句的基本语法 11.1.2 插入单记录 11.1.3 NULL的插入 11.1.4 由VALUES关键字插入多行数据 11.1.5 使用SELECT语句插入数据 11.1.6 通过视图插入数据 11.1.7 使用子查询插入数据 11.2 数据的更新操作 11.2.1 UPDATE语句的基本语法 11.2.2 使用UPDATE语句更新指定的列值 11.2.3 数据字段NULL的更改 11.2.4 更新全部数据 11.2.5 利用子查询更新数据 11.2.6 通过视图更新表数据 11.3 数据的删除操作 11.3.1 DELETE语句的语法结构 11.3.2 删除指定行的数据 11.3.3 删除所有数据 11.3.4 通过视图删除表数据 11.3.5 使用子查询删除数据 11.3.6 使用TRUNCATE TABLE语句 11.4 小结第12章 完整性控制 12.1 完整性约束概述 12.1.1 数据的完整性简介 12.1.2 完整性约束的类型 12.1.3 数据完整性的意义 12.2 约束 12.2.1 DEFAULT约束 12.2.2 CHECK约束 12.2.3 PRIMARY KEY约束 12.2.4 UNIQUE约束 12.2.5 FOREIGN KEY约束 12.2.6 NOT NULL约束 12.2.7 列约束和表约束 12.3 规则 12.3.1 创建规则 12.3.2 规则的绑定与松绑 12.4 域约束与断言 12.4.1 域与域约束 12.4.2 利用断言创建多表约束 12.5 默认值 12.5.1 创建默认值 12.5.2 默认值的绑定与松绑 12.6 小结第5篇 T-SQL高级编程篇第13章 存储过程 13.1 存储过程概述 13.1.1 存储过程的基本概念 13.1.2 存储过程的优缺点 13.2 存储过程常用的流控制语句 13.2.1 IF...LSE语句 13.2.2 BEGIN...END语句 13.2.3 DECLARE语句 13.2.4 GOTO语句 13.2.5 WAITFOR语句 13.2.6 WHILE、BREAK和CONTINUE语句 13.2.7 PRINT语句 13.2.8 RETURN语句 13.2.9 注释 13.3 创建与执行存储过程 13.3.1 创建存储过程 13.3.2 创建带参数的存储过程 13.3.3 创建带0UTPUT返回,参数的存储过程 13.3.4 执行存储过程 13.4 存储过程的查看、修改和删除 13.4.1 系统存储过程 13.4.2 存储过程的查看 13.4.3 存储过程的重命名 13.4.4 修改存储过程 13.4.5 存储过程的删除 13.5 Oracle数据的控制流语句 13.5.1 IF件语句 13.5.2 LOOP循环语句 13.5.3 FOR循环语句 13.5.4 WHILE循环语句 13.5.5 GOTO语句 13.6 Oracle数据存储过程 13.6.1 0racle数据创建存储过程 13.6.2 Oracle数据存储过程的执行 13.7 小结第14章 触发器 14.1 触发器的基础知识 14.1.1 触发器的概念 14.1.2 触发器的种类 14.1.3 触发器的组成 14.1.4 触发器的优点 14.1.5 触发器执行环境 14.2 触发器的创建 14.2.1 创建触发器的语法结构 14.2.2 Inserted表和Deleted表 14.2.3 INSERT触发器 14.2.4 UPDATE触发器 14.2.5 DELETE触发器 14.2.6 INSTEAD OF触发器 14.2.7 嵌套触发器 14.2.8 递归触发器 14.3 查看触发器 14.3.1 使用系统存储过程sp_help查看触发器 14.3.2 使用系统存储过程sp_helptext查看触发器 14.3.3 使用系统存储过程sp_depengs查看触发器 14.4 触发器的修改及删除 14.4.1触发器的修改 14.4.2触发器的删除 14.5 Oracle数据的触发器 14.5.1 Oracle触发器类型 14.5.2 触发器的创建 14.5.3 Oracle触发器的启用与禁用 14.5.4 0racle触发器的删除 14.6 小结第15章 游标 15.1 游标的定义 15.1.1 游标的基本概念 15.1.2 游标的分类 15.1.3 游标的作用及其应用 15.2 游标的使用 15.2.1 游标的创建 15.2.2 打开游标 15.2.3 关闭游标 15.2.4 释放游标 15.2.5 使用游标 15.2.6 检索游标 15.2.7 游标变量 15.3 游标的展使用 15.3.1 用于UJPDATE操作的可更新游标 15.3.2 用于DELETlE操作的可更新游标 15.3.3 可更新游标的综合操作 15.3.4 使用@@CURSOR_ROWS全局变量确定游标的行数 15.3.5 使用@@FETCh_STATJS全局变量检测FETCH操作的状态 15.3.6 使用系统过程管理游标 15.4 Oracle游标的使用 15.4.1 显式游标与隐式游标 15.4.2 游标属性 15.4.3 参数化游标 15.4.4 游标的循环 15.5 小结第16章 事务控制和锁定 16.1 事务 16.1.1 事务概述 16.1.2 事务的特性 16.1.3事务的分类 16.2 事务控制 16.2.1 事务控制操作 16.2.2 开始事务 16.2.3 提交事务 16.2.4 回滚事务 16.2.5 设置事务保存点 16.2.6 终止事务 16.3 并发控制 16.3.1 并发操作的问题 16.3.2 事务隔离级别 16.4 锁定 16.4.1 锁的作用及含义 16.4.2 锁的类型 16.4.3 SQL Server表级锁的使用 16.4.4 设置隔离级别实现并发控制 16.4.5 死锁及其处理 16.5 小结第17章 SQL安全 17.1 SQL安全概述 17.1.1 SQL安全的重要性 17.1.2 SQL安全的对象和权限 17.2 用户管理 17.2.1 创建SQL用户 17.2.2 删除SQL用户 17.3 角色管理 17.3.1 角色的优点 17.3.2 创建角色 17.3.3 删除角色 17.3.4 授予角色 17.3.5 取消角色 17.4 权限管理 17.4.1 授予权限 17.4.2 撤销权限 17.4.3 查询权限控制 17.4.4 插入操作权限控制 17.4.5 删除操作权限控制 17.4.6 更新操作权限控制 17.5 SQL Server的安全管理 17.5.1 SQL Server的用户管理 l7.5.2 SQL Server的角色管理 l7.5.3 SQL Server的权限管理 17.6 Oracle的安全管理 17.6.1 Oracle的用户管理 17.6.2 Oracle的权限管理 17.7小结第18章 嵌入式SQL 18.1 SQL的调用 18.1.1 直接调用SQL 18.1.2 SQL调用层接口(CLI) 18.2 嵌入式SQL的使用 18.2.1 嵌入式SQL 18.2.2 SQL通信区 18.2.3 主变量 18.2.4 在嵌入式SQL使用SQL语句 18.2.5 在嵌入式SQL使用游标 18.3 嵌入式SQL在SQL Server应用 18.3.1 嵌入式SQL代码 18.3.2 预编译文件 18.3.3 设置连接VC++6.O 18.3.4 编译运行程序 18.4 小结第6篇 T-SQL结合流行语言进行开发篇第19章 C#与SQL Server的开发与应用 19.1 C#开发环境 19.1.1 C#介绍 19.1.2 C#开发环境 19.2 C#连接数据 19.2.1 C#数据控件介绍 19.2.2 数据连接举例 19.3 数据查询应用 19.3.1 普通数据查询的实现 19.3.2 连接查询的实现 19.3.3 子查询的实现 19.3.4 复合查询的实现 19.4 运算符与表达式的应用 19.4.1 连接数据表的实现 19.4.2 算术运算符的应用 19.4.3 表达式的应用 19.5 数据维护操作的应用 19.5.1 添加数据的实现 19.5.2 更新数据的实现 19.5.3 删除数据的实现 19.6 触发器与存储过程的应用 19.6.1 在C#应用触发器 19.6.2 在C#应用存储过程的示例 19.7 小结第20章 VB.NET与SQL Server的开发与应用 20.1 VB.NET介绍 20.1.1 了解VB.NET 20.1.2 VB.NET的新特点 20.2 VB.NET连接数据 20.2.1 通过数据控件绑定连接数据 20.2.2 通过数据对象直接连接数据 20.3 数据查询应用 20.3.1 普通数据查询的实现 20.3.2 连接查询的实现隐藏全部目录>>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧