ADO.NET使我们在VS开发中用到最多的数据库访问接口,这里我不见它的原理和其它,直接说它的几种常见的用法。
声明:在ADO.NET全部讲完之后,会将整个源代码贴出,将单个的时候只贴出涉及到的代码。
一、SqlCommand
表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 此类不能被继承。Command类可以执行任何类型的SQL语句。
1、构造函数
我们在使用其执行SQL语句的时候,必须首先声明其对象,常用的三种:
◆ SqlCommand() 初始化 SqlCommand 类的新实例。
◆ SqlCommand(String) 用查询文本初始化 SqlCommand 类的新实例。
◆ SqlCommand(String,SqlConnection) 初始化具有查询文本和 SqlConnection 的 SqlCommand 类的新实例。
【注】SqlConnection 的使用将不单独讲,因为在操作数据库的时候都会用到。
2、常见属性
◆ CommandText 获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。
◆ CommandType 获取或设置一个值,该值指示如何解释 CommandText 属性。
◆ Connection 获取或设置 SqlCommand 的此实例使用的 SqlConnection。
◆ Parameters 获取 SqlParameterCollection(sql语句中需要输入的阐述集合)。
3、常用方法
◆ ExecuteNonQuery 执行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 语句等命令并返回受影响的行数。
◆ ExecuteReader() 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。
◆ ExecuteReader(CommandBehavior) 将 CommandText 发送到 Connection,并使用 CommandBehavior 值之一生成一个 SqlDataReader。
◆ ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。
◆ Dispose() 释放由 Component 使用的所有资源。
3、示例
◇使用SqlCommand执行添加数据的操作:
string teacherName = NameTextBox.Text.Trim(); string strConn = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();//获取数据库连接字符串 SqlConnection conn = new SqlConnection(strConn);//创建连接 try { conn.Open();//打开数据库连接 string inserStr = "insert into Fortyfour_Teacher (TeacherName) values (@teacherName)"; using(SqlCommand cmd = new SqlCommand(inserStr,conn))
{ SqlParameter p1 = new SqlParameter("@teacherName",teacherName); cmd.Parameters.Add(p1);//添加参数 if (cmd.ExecuteNonQuery() > 0) { //添加成功的操作 } else { //添加失败的操作 } } } catch(Exception ex){ throw ex; } finally{ conn.Close();//关闭数据库,可以在打开 conn.Dispose();//关闭数据库,释放控件,不可在连接。 }
◇使用SqlCommand执行删除、修改数据的操作,这里我不写出代码,这个和添加很像,区别在于 sql语句不一样
◇使用SqlCommand执行查询数据的操作,这个需要结合DataReader()或者DataAdapter()来获得数据库中的数据,DataAdapter()将在后面的文章中详细讲解,现在将讲解一下DataReader()。
二、SqlDataReader
提供一种从 SQL Server 数据库读取行的只进流的方式。 此类不能被继承。只能向下顺序执行,一次读取一条记录,所以需要随时保存的记录。
1、常用属性
◆ IsClosed 检索一个布尔值,该值指示是否已关闭指定的 SqlDataReader 实例。
2、常用方法
◆ Read() 使 SqlDataReader 前进到下一条记录。
◆ Close 关闭 SqlDataReader 对象。
◆ Dispose() 释放 DbDataReader 类的当前实例所使用的所有资源。
◆ IsCommandBehavior 确定指定的 CommandBehavior 是否与 SqlDataReader 的对应项匹配。
◆ IsDBNull 获取一个值,用于指示列中是否包含不存在的或缺少的值。
3、示例,结合SqlCommand
private static void ReadStudent(string connectionString) { string queryString = "SELECT StudentId, StudentName FROM Student"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); using(SqlDataReader reader = command.ExecuteReader()){//使用DataReader对象保存读取的数据 while (reader.Read())//向下读取数据,判断是否有数据 { Console.WriteLine(String.Format("{0}, {1}",reader[0], reader[1])); } } } }
参考资料:MSDN
【注】下篇文章将详细讲解DataAdapter与DataSet/DataTable,以及CommandBuilder