ADO。net学习笔记
来源于网络
1. SqlConnection(DBConnection) 建立程序与数据库的链接 链接字符串有两种形式:
//使用Windows验证 SSPI(安全支持提供程序接口)
String theConnectionString =”Data Source=.express; Initial Catalog=DataBase; Intergrated Security=SSPI”;
//使用SQL Server身份验证
String theConnectionString=”Data Source=.express; Initial Catalog=DataBase; User ID=XX; Password=mypassword”;
关于连接池(connection pooling):里面放了很多的连接,只要连接字符串的值不发生改变,Ado.net则会重用现有的链接,而不建立新的链接。其默认值为true,这也是为什么每次操作结束之后都调用一个conn.Close()方法:将连接返回连接池。
2. SqlCommand(DBCommand) 对数据库发出一些指令
写好CommandText之后可以选择执行:
*ExecuteNonQuary: 适用于不需要返回任何记录的情况,比如insert,update,delete
*ExecuteReader :通过执行ConnectText,返回一组DataReader对象
*ExecuteScalar :用于执行查询,返回查询结果所返回的数据集中的第一行第一列
*ExecuteXmlReader:
或者用Adapter来执行
它用的比较多的属性有:
*CommandText : *CommandType :*Connection : *Parameter :
期中的CommandType共有三种:CommandType.Text/CommandType.StoredProcedure/
CommandType.TableDirect
存储过程:theComand.CommandText=”存储过程名”
theComand.CommandType=CommandType.StoreProceduce
Parameter :向command对象添加参数
防止SQL注入:
Using(SqlCommand cmd=new SqlCommand())
{
cmd.Connection=conn;
cmd.CommandText=”delete customer where customerID=@id”;
cmd.CommandType=System.Data.CommandType.Text;
SqlParameter paramID=new SqlParameter(“@id”,textBox1.Text);
cmd.Parameter.Add(paramID);
}
3. DataAdapter 链接数据库与DataSet之间的桥梁
SqlDataAdapter sda=new SqlDataAdapter(command): 在默认情况下,这个command会用于填充DataAdapter的SelectCommand属性,对于其他的属性,可以使用SqlCommandBuilder自动生成:
SqlDataAdapter sda=new SqlDataAdapter(theCommand);
SqlCommandBuilder theBuilder=new SqlCommandBuilder(sda);
Adapter.Fill(ds,”DataTable”) : 使用SelectCommand属性获取对象,并将它填充到ds中的DataTable表中
Adapter.FillSchema(ds1,SchemaType.Source,”DataTable”) 不放数据,而是把DataTable的框架拷贝给ds1
Adapter.Update();将数据库中的数据更新到DataSet中
4. DataReader : 当只需要循环读取数据而不需要进行其他操作的时候可以使用这个。因为它在读取数据时限制了每次只能读取一笔数据,而且只能只读,所以使用起来不仅节省资源,而且效率很高。
DataReader对象通过Command的ExecuteReader方法获得,一旦获得之后可以使用它的Read方法来获取数据
SqlDataReader reader=new SqlDataReader();
String output=String.Empty;
If(reader.HasRows)
{
while(reader.Read()
{Console.WriteLine(reader[“name”]/reader[1]).toString();}
}
Reader.Close();
5. DataSet :可以将它视为一个cache,将数据库中查询到的数据保留起来
构造的时候顺序(列->表->cache):
Private static DataSet BuildDataSet()
{
DataSet ds=new DataSet();
DataTable dt=new DataTable(“Product”);
DataColumn dcProID=new DataColumn(“ProductID”,typeof(int));
DataColumn dcProName=new DataColumn(“ProductName”,typeof(string));
dcProName.MaxLength=100;
DataColumn dcReleaseDate=new DataColumn(“ReleaseDate”,typeof(DataTime));
//添加列
Dt.Column.Add(dcProID);
Dt.Column.Add(dcProName);
Dt.Column.Add(dcReleaseDate);
//添加约束:
Dt.PrimaryKey=new DataColumn[]{dcProID };
Dt.Constraints.Add(new UniqueConstraint(dcProName));
//添加元祖:
Dt.Raws.Add(new object[]{1,””,DataTime.Now});
Ds.Table.Add(dt);
Return ds;
}
若有多张表的话,还可以创建DataRelation 参考:http://blog.sina.com.cn/s/blog_55a69f170100l16k.html
删除DataTable中的一行:
Public void DeleteCustomer(int id)
{
DataSet ds=new DataSet();
DataRow[] results=ds.Table[“表名”].Select(“ID=”+id.ToString());
If(results.length>0)
{result[0].Delete();} //Delete:给行标记上删除记号,等最后操作的时候删除,区分与Remove()的区别
Ds.AcceptChanges();
}
ADO。net学习笔记的更多相关文章
- ADO.NET 学习笔记 入门教程
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在 ...
- ADO.NET学习笔记(1)
ADO.Net是.Net框架中为数据库的访问而封装的一个库.通过这个库我们可以简单便捷的访问数据库,并对数据库进行一些增删改查的操作,目前ADO.Net支持四种主流的数据库,分别是SQL.OLE DB ...
- C#-ado.net学习笔记-会有更新
ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...
- Sql Ado.net 学习笔记之连接字符串
https://www.cnblogs.com/heng95/p/5902019.html 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符 ...
- ADO.NET Entity Framework学习笔记(3)ObjectContext
ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转] 说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...
- ADO学习笔记之注入漏洞与参数化查询
ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...
- Entity Framework学习笔记——错误汇总
之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- CUBRID学习笔记 3 net连接数据库并使用cubrid教程示例
接上文 数据库安装好后,也可以测试语句了. 下面我们用c#写一个控制台程序,连接数据库,并读取数据. 一 下载驱动 net版的下 CUBRID ADO.NET Data Provider 9.3.0 ...
- Entity Framework学习笔记
原文地址:http://www.cnblogs.com/frankofgdc/p/3600090.html Entity Framework学习笔记——错误汇总 之前的小项目做完了,到了总结经验和 ...
随机推荐
- linux中php配置
安装nginx+php好久了,今天意外的搭建好了,分享给大家 ,以免以后多走弯路. nginx已经前面安装好了,现在就开始配置php 安装php 分为两个部分 :一部分是php源码,另外是fastcg ...
- PS:抠图方法1(利用对比度ctrl+l)
PS:抠图方法1(利用对比度ctrl+l) 工具/原料 Photoshop.美女照片 方法/步骤 小编使用的是Photoshop cs5版本,大家使用其他版本都没有关系,界面略有不同,但操 ...
- php 特定类型测试函数
is_array() 检查变量是否是数组 is_double().is_float().is_real() 检查变量是否是浮点数 is_long().is_int().is_integer()检查变量 ...
- TCP的四次挥手
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向上没有数据流动, 一个TCP连接 ...
- 用ifconfig命令,只有lo,没有eth0的解决方案
解决方案: 1. 进入/etc/sysconfig/network-scripts 目录,发现有ifcfg-eth0,即网卡(驱动)存在但未启用. 2. 输入ifconfig -a命令,可显示eth0 ...
- runtime基础
前言 学习Objective-C的运行时Runtime系统是很有必要的.个人觉得,得之可得天下,失之则失天下. Objective-C提供了编译运行时,只要有可能,它都可以动态地运作.这意味着不仅需要 ...
- UIImageView 浅析
UIImageView summary UIImageView极其常用,功能比较专一:显示图片 pooperty @property(nonatomic,retain) UIImage *image; ...
- 为Android系统内置C可执行程序测试Linux内核驱动程序
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中, 创建三个不同的文件节点来供用户空间访问,分别是传统的设备 ...
- Unity3D项目优化(转)
前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的 ...
- java 线程的同步
Example12_7.java public class Example12_7 { public static void main(String args[]) { Bank bank = new ...