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与数据库的相关知识,现在我将自己学到的东西整理写出来,也算是对学习的一种复习. 这篇文章主要说明如何遍历某台机器上所有的数据库服务,遍历某个服务中所有的数据库,遍历数据库中的所有表以及 ...
随机推荐
- iOS 应用关于弥补安全优化问题
1.log输出会被中奖者截获,暴露信息,影响app得性能 在工程里面的pch文件加入以下代码 // 调试状态 #define LMLog(...) NSLog(__VA_ARGS__) #else / ...
- CF615D Multipliers [数学]
tags:[计数原理][乘法逆元][归纳の思想]题解(复杂度:O(mlogm)):棘手之处:n的约数多到爆炸.因此我们不妨从因子的角度来分析问题.对n分解质因数得:n = p1^a1 * p2^a2 ...
- 设置ssh只允许用户从指定的IP登陆
假设 我们公司的固定IP是 183.21.89.249 连接上我们自己进行管理的服务器 然后编辑ssh的配置文件默认 /etc/ssh/sshd_config 在文件最后面另起一行添加 ...
- kafka使用实例
定义一个procucer package cn.vko.common.kafka; import java.util.Properties; import org.apache.commons.lan ...
- Android批量验证渠道、版本号
功能:可校验单个或目录下所有apk文件的渠道号.版本号使用说明:1.copy需要校验的apk文件到VerifyChannelVersion目录下2.双击运行VerifyChannelVersion.b ...
- C#---------------继承和多态初步
继承:在程序中,如果一个类A:类B,这种机制就是继承. 子类可以继承父类的所有内容(成员)吗? 解析: 1.私有成员(属性和方法) 2.构造函数 3.final修饰过的方法,子类不能进行重写 3.访问 ...
- 手把手视频:万能开源Hawk抓取动态网站
Hawk是沙漠之鹰历时五年开发的开源免费网页抓取工具(爬虫),无需编程,全部可视化. 自从上次发布Hawk 2.0过了小半年,可是还是有不少朋友通过邮件或者微信的方式询问如何使用.看文档还是不如视频教 ...
- Spring Boot 中如何使用 Dubbo Activate 扩展点
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 公司的核心竞争力在于创新 – <启示录> 』 继续上一篇:< Spri ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录
本文提要 前文也提到过druid不仅仅是一个连接池技术,因此在将整合druid到项目中后,这一篇文章将去介绍druid的其他特性和功能,作为一个辅助工具帮助提升项目的性能,本文的重点就是两个字:监控. ...
- Unity属性的封装、继承、方法隐藏
(一)Unity属性封装.继承.方法隐藏的学习和总结 一.属性的封装 1.属性封装的定义:通过对属性的读和写来保护类中的域. 2.格式例子: private string departname; // ...