Sql Server + ADO.NET
MsSql-
http://www.cnblogs.com/zhangwei595806165/archive/2012/02/23/2364746.html
协议:
Shared Memory :效率最高,在内存中操作,是能用于本机,用.或(local)就等登录
Named Pipes :Winodows与Windows交流的协议,机器名交流,一般用不到
Tcp-Ip :通过IP地址访问服务器 _用Ip地址登录
字段的数据类型:
Image 可用来存储图像,以二进制数据存储,但图片放进数据库效率很低。
以文本方式存储:
Char(1-8000) 定长字符数据,空格补齐,低于五个字符最好使用char
Varchar(1-8000)定长字符,字符少会空格补齐,性能高
Nchar(1-4000) 固定长度,两个字节存储一个字符,空间换时间
Nvarchar(1-8000)可变长字符数据,字符不会补齐,两个字节存储一个字符但搜索时效率会低
varchar(MAX)/nvarchar(MAX):存储大数据的文本,2005之前用text,text不能用模糊查询
精确数值存储:
bit :0/1/null
int :四字节存储一个数据
bigint:比int范围更大更广,八个字节存储一个数据。
日期类型
datetime: 1753.1.1~9999.12.31,表示一个完整的日期类型
datatime2 :最早甚至可以追溯到中华文明五千年。。。。大部分用datetime就足够
time:小时:分钟:秒 主要存储时间
t-sql建表:
create database 数据库名
on[(
name='',
size=.;
filename='绝对路径'
)]
create table 表名(
字段名 类型 是否为可空(默认为空) 约束
)
---------------
约束:
主键约束:不能为空 primary key
外键约束:foreign key 外键的列与列最好要一样。 referecnces 关联的表(字段)
唯一约束:unique
自增:标识种子和标识增量中设置。
检查约束:check,检查可以在c#程序中检查,在数据库中设置检查会消耗效率。
默认约束:default('默认值')
非空约束:not null ,默认为null
-----------------------
sql的执行顺序--先找到表,分组,查询数据。
------------
CRUD:
增:insert into 表名(列名) values() // values中需要对应列名的顺序
删:delete from 表名 ...
改:update 表名 set 列名=值 ...
查:select 字段 from 表名 ...
聚合函数:
Sum :取和
Avg :求平均值
Count:计算次数
Min/Max:求最大或最小
排序: 前面top关键字,order by 列名 desc( 降序)默认升序 asc
去重复: distinct select distinct 字段 from... 判断字段是否重复,对后面所有的列进行去重复
分组: group by 列名 select后面只能跟 group by 后面的字段或聚合函数
分组后查询: group by 后面+having
Ado.Net-------------------------------
访问数据库的驱动-ado.net
SqlConnection:
负责连接数据库。服务器Ip,用户名,密码,数据库名。
Disponse(释放)后不能在被Open
Open之后不能再次Open
连接池:通过连接字符串配置连接池,当连接池中有连接时,不创建新连接,使用连接池中的连 接。实现了连接对象重用的效率
--一个连接字符串对应于一个连接池
server=.;uid=sa;pwd=123;database=... //通过用户名密码连接
server=.;Integrated Security=SSPI;database=... //通过windows验证连接
SqlCommand:sql命令的封装,有重载,可以把connection直接给sqlcommand
-ExecuteNonQuery():返回执行sql语句后几行受影响,返回int类型
-ExecuteScalar() :返回查询结果第一行,第一列的数据,返回Object
-ExcuteReader() :返回一个reader,指针,指向表的标头,返回SqlDataReader
SqlDataReader:在线的读取数据,当读取中,不允许关闭connection管道。
-Read():指向下一行数据,每次执行都指向下一行,返回bool类型,可作为循环判断值
读取数据:用SqlDataReader实例化后的对象加具体的列名或索引读取。如read["AA"]
-GetXXX:如GetString,获取当前行的某一列的值
------------
DataReader与DataAdapter的区别:
DataReader是在线的读取,在读取中,连接管道要一直开启,不能关闭
DataReader要通过SqlCommand执行Sql语句之后,用DataReader读取。
适用于数据量庞大的情况
DataAdapter是离线的读取,甚至不用打开管道,Fill方法中自动判断。
DataAdapter不用显示的声明Sqlcommand,也不用显示的打开管道。DataAdapter初始化后会自动判断是否打开管道,并且自动创建SqlCommnd对象并执行。
适用于数据量小的情况
SqlDataAdapter数据访问适配器------------------
适配器:把一个不符合规范的数据,适配成符合规范的数据
SqlDataAdapter初始化后:
会判断是否打开连接,
并自动创建一个SqlCommand对象、
通过command对象执行Sql语句,
并返回一个SqlDataReader对象。
读取查找到的数据后填充到DataTable中
数据 → SqlDataAdapter → DataSet/DataTable
配置文件,config--------------
config文件的更多详细信息:http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html
把可能需要改动的数据,放在App.config或web.config
<connectionStrings>
<add name="SqlConfig" connectionString="server=.;Integrated Security=SSPI;database=db_Demo"/>
</connectionStrings>
那我们怎么用呢?记得引用system.configuration.dll
ConfigurationManager.ConnectionString
Sql注入漏洞------------
用户在输入的地方,利用特殊字符,过掉判断。
T-sql语言中@...被当成一个变量
select * from database where UserName=@UserName and UserPwd=@UserPwd
cmd.Parameters.Add(参数,参数的值) 如 cmd.Parameters.Add("@UserName",123)//此方法过时
参数化Sql,如果其中有特殊字符,会自动进行转码,过滤掉特殊字符。
or
SqlParameter parameter = new SqlParameter("@A", SqlDbType.NVarChar);
parameter.SqlValue = "200";
cmd.Parameters.Add(parameter);
DataSet(数据表的集合),DataTable(数据列的集合)-----------------------
DataSet:离线数据集
一个DataSet中包含很多DataTable ,一个DataTable中包含很多DataColumn(数据列)
DataTable:离线数据表
当找到到数据填充到数据表之后,
遍历之后封装成强类型对象,把强类型对象给数据源。
-创建一个数据库实体类,把查到的数据赋给强类型对象
(
List<DemoInfo> demo = new List<DemoInfo>(); //DemoInfo为数据库实体类
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(dr["A"] + " " + dr[1]);
demo.Add(new DemoInfo
{
AAA = dr["A"].ToString(),
BBB = dr["B"].ToString(),
CCC = dr["C"].ToString(),
});
}
dgvUserInfo.DataSource = demo;
)
--视图(待更新)
--索引(待更新)
--事物(待更新)
--存储过程(待更新)
Sql Server + ADO.NET的更多相关文章
- SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输
SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输 微软高兴地宣布所有主流SQL Server客户端驱动和SQL Server发行版已经支持T ...
- 【转】PowerShell 连接SQL Server 数据库 - ADO.NET
转至:http://www.pstips.net/connect-sql-database.html PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整 ...
- Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3
最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分. 首先Microsoft SQL Server Compact 4.0 详细的介绍和下载 ...
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- SQL Server 数据类型映射 (ADO.NET)
SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...
- 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)
原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/11/11/1331060.html 如果你需要在程序中批量插入成千上万行的数据,你会怎么编写 ...
- JDBC连接SQL server与ADO.NET连接Sql Server对比
JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet. 主流的有 ...
- ADO.NET中SQL Server数据库连接池
连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...
- ADO对SQL Server 2008数据库的基础操作
最近在学习ADO与数据库的相关知识,现在我将自己学到的东西整理写出来,也算是对学习的一种复习. 这篇文章主要说明如何遍历某台机器上所有的数据库服务,遍历某个服务中所有的数据库,遍历数据库中的所有表以及 ...
随机推荐
- 性能调优之SQL优化
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- Math.pow用法及实现探究
pow函数在java.lang.Math类中,是求次方的函数,定义为: public static double pow(double a, double b): 即求a的b次方,例如: public ...
- 深入理解css中vertical-align属性
一.为什么要写这篇文章 今天看到一个问题: 两个div 都设置 display:inline-block,正常显示:但是在第二个div中加一个块级元素或者内联元素,显示就变了个样,为什么? <m ...
- 在SQL Server中用好模糊查询指令LIKE
简介:like在sql中的使用 在SQL Server中用好模糊查询指令LIKE 查询是SQL Server中重要的功能,而在查询中将Like用上,可以搜索到一些意想不到的结果和效果,like的神奇之 ...
- webpack 打包成功,但是css不起作用
问题: webpack 打包成功,但是css不起作用 问题分析/解决: 原因有以下几种 使用了webpack2的语法规则不正确; webpack2要求必须写-loader; 可能是只写了css-loa ...
- SSH整合总结(xml与注解)
本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入ja ...
- C++ count_if/erase/remove_if 用法详解
每次使用这几个算法时都要去查CPP reference,为了能够加深印象,整理一下基本应用. cout/cout_if: return the number of elements satisfyi ...
- MongoDB系列:把mongodb作为windows的服务来启动
1.首先切换到mongodb安装目录下的bin目录,在控制台直接运行以下命令 "C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" ...
- php 启动过程 - sapi MINIT 过程
php 启动过程 - sapi MINIT 过程 sapi 概念 sapi 是 php 的应用编程接口, server 端接收请求通过 sapi 接口层交给 php 处理 不同的 server 端底层 ...
- 关于mpu6050的几个很好的帖子
最近在研究6050,真是很磨人啊,这个小东西还挺复杂,一个读取程序竟然需要600多行. 这几天连查资料找到了几个很好的帖子,要是以后有人看到这篇帖子,可以避免误入歧途,也可以省去很多时间. 1.阿西莫 ...