.NET中资料库的设计与SQL

ADO.NET设计

先来说说资料库的设计

主要涉及

关联式资料库

资料库系统管理(DBMS)

结构化查询(SQL)

预储程序

一个资料库包含一个以上的资料表,每个资料表有很多记录

以下是一个小的范例

如Salse 资料库有Customers,orders和Pruducts三个表

表与表之间都过主索引键进行关联。

而表之间的关联有:  一对多,多对一和多对多三种关系。

多对多的关系(是要产生中间的表格来对应其他两个,他们之间是不能直接关联的。)

资料库管理系统(DBMS)

主要两个重要的东西

资料

资料库引擎

 

资料库管理系统常见分类有

本机 和伺服器两种

本机DBMS:资料库引擎在用户端,通常是免费的

伺服器 Server:伺服器资料库引擎是另外一个行程,通常是在另外一个主机上。

SQL(Structured Query Language)语法

Order BY排序方式(DESC从大到小,ASC从小到大)

DML(查询格式来撰写语句)

其他非查询式SQL命令(Insert,Update,Delete)

DML的一些语句

 Select Count()as 别名

      Select AVG ( ) as 别名

      Select MAX( ) as 别名

      Form  表名

Joins  增加不同资料表的资料

如 select FristName,LastName

From Customers

Inner Join orders On Customers.CID=Orders.CID

Where Orders.OID=1234;

Outer joins

将不符合条件的记录,使用outer Joins添加到记录中

 

预储程序(即为存储过程)

存储过程是

可以接受参数

可以传回资料

预先编译,速度快

优缺点

执行快速

将复杂的SQL封装起来

提供另外一层的存取控制能力

大部分的资料库提供都支持

缺点

每个资料库提供者的存储过程程序语法都不一样

预存储程序不容易转换成为其他格式的程序

ADO.NET的设计

包含

ADO.NET架构

 

资料读取与写入

 

DataSet

 

工具

ADO.NET的架构是基于资料提供者之上的,资料提供者讲有关资料库存取的细节封装起来。

是用来存取资料库的物件集合。

核心命名空间有

一般: systen.data,

 SQL server: system.data.SQLclient

Oracle: system.data.oracleclient

OLEDB: system.data.Oledb

ODBc

资料的存取方式有四种

DataRead唯读存取

DataSet读写

ExecuteNOtquery修改资料库资料

ExecuteScalar()取得单一资料

DateReader

是透过DataReader 物件可以逐一读取资料

DataReader是一笔笔的去读,根据要求,以串流的方式返回给用户端。

且占用资料连线,使用伺服端游标直接连线开关。

存取步骤

1 开放资料库连线

建立连线物件,用Open方法,设定连线字符串

建立连线字符串,格式要根据不同的资料库而定。

2 进行资料库操作

建立DataReader物件,并逐一读取。

3 开关资料库连线

资料修改

ExecuteNonQuery透过以下三中DML语法来修改资料库

Insert

Update

Delete

透过ExecuteNonQuery()方法回传修改的资料笔数。

DataSet

是一个在记忆中的资料结构

用表格的方式存储。

DateaSEt相当于离线的Recordset

资料是由伺服端复制回来

然后再用户端离线处理资料

他允许你:

减少资料库服务器的负载

开关资料库连线,并且离线处理资料

还可以存储你想要处理的所有资料

可以搜索,排序,修改等。

特别是在分散式应用程序中特别有用。

.NET中资料库的设计与SQL的更多相关文章

  1. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  2. 设计 Azure SQL 数据库,并使用 C# 和 ADO.NET 进行连接

    标题:设计 Azure SQL 数据库,并使用 C# 和 ADO.NET 进行连接 里面有使用C#使用SqlServer的例子.

  3. 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。

    在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...

  4. 大数据量查询优化——数据库设计、SQL语句、JAVA编码

    数据库设计方面: 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将 ...

  5. 表设计与SQL优化

    1. 说说分区表的主要好处是什么,为什么会有这些好处. 分区功能能够将表.索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区.每个分区有自己的名称,还可以选择自己的存储特性. 从数据库管理员的 ...

  6. 数据库设计与SQL优化的建议

    1. 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用 ...

  7. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

  8. 设计高效SQL: 一种视觉的方法

    行; 这听起来很直观,但最有效的方法是什么?你可能有如下选择:行,其中有50行你必须剔除行,其中有450行你必须剔除行中剔除50行听起来比从500行中剔除450行更高效,但是请记住:聚簇,或者说,数据 ...

  9. MySQL学习-数据库设计以及sql的进阶语句

    1.数据库设计 关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步 在开发中有很多设计数据库的软件,常用的如power des ...

随机推荐

  1. WPF 打印控件 无弹框打印。

    WPF中打印用到了 PrintDialog类. 其中设置打印属性的是PrintTicket,管理打印机的是PrintQueue. 实例如下: public class PrintDialogHelpe ...

  2. springMVC获取file,几种转换

    //从前台通过name值获取file MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)reque ...

  3. an error occurred during the file system check错误的解决

    [root@GIT ~]# fsck -A /dev/mapper/VolGroup-lv_root 下面的选择,一路Y就行了,最后reboot,问题解决!

  4. svn利用钩子post-commit自动更新到线上测试服务器(测试中未验证)

    创建一个新的版本库: [root@centos03 svn]# pwd /home/svn [root@centos03 svn]# svnadmin create webtest [root@cen ...

  5. 学SEO你其实只需要半个钟

    网站上线之前: 关键词的分析以及选择: 关键词在我们网站的每个页面:首页,栏目页,文章都存在,它定位了你的网站的这个页面是做什么的,有什么内容,也是SEO中的最重要的部分. 网站必须确定并且设置好关键 ...

  6. ORA-00824:cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings

    练习时执行一条修改数据库连接数的语句: alter system set processes=1 scope=spfile; 然后关闭数据库: shutdown 再启动数据库时,出现异常,报错信息如下 ...

  7. Windows Phone8 遇见的问题

    1.公司的无线路由可以自动分发ip地址,模拟器可以自动获取ip,进行连接.宿舍的无线路设置了DHCP 不能自动分发ip地址,模拟器连接不到ip,上不去网,我就去hyper-v 管理器里修改了静态mac ...

  8. hdu 4002 欧拉函数 2011大连赛区网络赛B

    题意:求1-n内最大的x/phi(x) 通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是 ...

  9. hdu 4022 STL

    题意:给你n个敌人的坐标,再给你m个炸弹和爆炸方向,每个炸弹可以炸横排或竖排的敌人,问你每个炸弹能炸死多少个人. /* HDU 4022 G++ 1296ms */ #include<stdio ...

  10. JAVA 获取web文件的相对路径

    转自:http://wwwdd2315.blog.163.com/blog/static/66661889201091953350298/ 在JAVA文件中获取该项目的相对路径1.基本概念的理解 绝对 ...