黑马程序员--学习笔记--.net Data Providerl连接到SQLServer的核心类有关要点
来源:互联网 发布:手机淘宝直通车怎么弄 编辑:程序博客网 时间:2024/06/12 23:24
要点一:SqlConnection类和DataReader类相关
(1)ADO.Net中通过SqlConnection类创建到SQLServer的连接,SqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理。
(2)SqlCommand表示向服务器提交的一个命令(SQL语句等),CommandText属性为要执行的SQL语句,ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等),ExecuteNonQuery返回值是执行的影响行数。
例如:
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert intoT_Users(UserName,Password) values('admin','888888')";
cmd.ExecuteNonQuery();
(3)SqlCommand的ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型。
例如:
• cmd.CommandText = "select count(*) from T_Users";int i =Convert.ToInt32 (cmd.ExecuteScalar())
• cmd.CommandText = "select getdate()"; DateTime dt =Convert.ToDateTime(cmd.ExecuteScalar());
得到自动增长字段的主键值,在values关键词前加上outputinserted.Id,其中Id为主键字段名。执行结果就试插入的主键值,用ExecuteScalar执行最方便。
例如:
• cmd.CommandText = "Insert into T_Users(UserName,Password)output inserted.Id value ('admin','888888')";
• int i = Convert.ToInt32(cmd.ExecuteScalar());
(4) 执行有多行结果集的用ExecuteReaderSqlDataReader reader = cmd.ExecuteReader();
例如:
while (reader.Read())
{
Console.WriteLine(reader.GetString(1));
}
(5)reader的GetString、GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号。
(6)SqlCommand的Parameters中添加参数
例如:
• cmd.CommandText = "select * from T_Users whereUserName=@UserName andPassword=@Password";
• cmd.Parameters.Add(newSqlParameter("UserName","admin"));
• cmd.Parameters.Add(newSqlParameter("Password",password));
要点二: DataSet类和SqlDataAdapter类相关
(1)每次读取数据都创建连接、执行Command得到SqlDataReader太麻烦,SqlDataReader是连接相关的, SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。
SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取。
例如:
DataSet dataset = new DataSet();
SqlDataAdapter adapter = newSqlDataAdapter(cmd); adapter.Fill(dataset);
SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。
例如:
foreach(DataRow row in dataset.Tables[0].Rows) row["Name"]。
(2)可以更新行row["Name"] = "yzk"、删除行datatable.Rows.Remove()、新增行datatable. NewRow()。这一切都是修改的内存中的DataSet,没有修改数据库。
可以调用SqlDataAdapter的Update方法将对DataSet的修改提交到数据库,Update方法有很多重载方法,可以提交整个DataSet、DataTable或者若干DataRow。但是需要为SqlDataAdapter提供DeleteCommand、UpdateCommand、InsertCommand它才知道如何将对DataSet的修改提交到数据库,由于这几个Command要求的格式非常苛刻,因此开发人员自己写非常困难,可以用SqlCommandBuilder自动生成这几个Command,用法很简单:new SqlCommandBuilder(adapter)。查看生成的Command(没有直接赋值给SqlDataAdapter ,看SqlCommandBuilder的)。SqlCommandBuilder要求表必须有主键。
通过DataRow的RowState可以获得行的状态(删除、修改、新增等);调用DataSet的GetChanges()方法得到变化的结果集,降低传递的资源占用。
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/
- 黑马程序员--学习笔记--.net Data Providerl连接到SQLServer的核心类有关要点
- 黑马程序员之ADO.NET学习笔记:ADO.NET连接SQLSERVER数据库
- 黑马程序员之ADO.NET学习笔记:SqlConnection(连接对象)
- 黑马程序员《.NET SQLserver》
- 黑马程序员—13—java基础:有关集合类的学习笔记和心得体会
- 黑马程序员—19—java基础:有关File类的学习笔记和学习心得体会
- 黑马程序员-有关交通灯设置的笔记
- 黑马程序员--学习笔记之通用型的数据库访问连接
- 黑马程序员-自学笔记-SQLServer与ADO.Net(四)
- 黑马程序员-自学笔记-SQLServer与ADO.Net(六)
- 黑马程序员——C语言学习笔记04 字符、数组和字符串的一些要点。
- 黑马程序员_.NET学习13(SQLServer复习)
- 黑马程序员----枚举类的学习笔记
- 黑马程序员 类 学习后的笔记
- 黑马程序员.net学习笔记2--接口,抽象类小结。
- 黑马程序员.net学习笔记3----泛型。
- 黑马程序员_ADO.NET学习笔记
- 黑马程序员_ADO.NET学习笔记
- 瀑布流例子
- Tomcat6的配置
- Spring源代码解析(一):IOC容器【转载计文柯书籍】
- 跟踪
- 安装Bumblebee解决Ubuntu笔记本发热量大问题
- 黑马程序员--学习笔记--.net Data Providerl连接到SQLServer的核心类有关要点
- 给定一个单向链表,目前已经有一个指针,指向某一个节点(记作A),现在要删除这个节点A,如何操作。
- bubbleSort, InsertionSort, mergeSort, heapSort实现
- 从SVN上更新项目后,MyEclipse不能自动编译问题解决
- celery-redis的安装和使用
- 吃就吃健康,不要费钱不讨好
- sql 显示说有库名
- vb.net2008 DirectX与VB.NET编程(四)3D音效理论篇
- ASP.NET 母版页与内容页 修改、加载、调用控件等问题汇总