技术开发 频道

ADO.NET关键点---数据提供程序


【IT168技术文档】

  数据提供程序概述
//使用构造器的最简单方法。 SqlConnection sqlConn = new SqlConnection("strConn"); SqlCommand sqlCmd = new SqlCommand(strSql,sqlConn); sqlCmd.CommandType = (存储过程) SqlDataAdapter da = new SqlDataAdapter(strSql,SqlConn); da.Fill(ds,"Employee");
  首先介绍数据提供程序的四个核心类:
  1、Connection类

  SQL Server常用数据库链接字串:
标准连接1 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword; 标准连接2 Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False; 信任连接1 Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 信任连接2 Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
  指定数据库地址:

  指定特定实例:serverName"instanceName
  指定IP需写端口:190.190.200.100,1433;
  例子:192.168.0.6"sqlexpress,1433
  2、Command类

  Command类的RUID的操作:
方法名 说明 ExecuteReader() 有一个可选参数是 CommandBehavior枚举集合中的一个 ExecuteNonQuery() 返回命令所影响的行数。 ExecuteScalar() 返回第一行的第一列或者聚合值。 ExecuteXmlReader() 仅对sqlcommand类可用,Command的Sql命令应包含For XML子句
  使用存储过程插入的例子:
sqlCommand.CommandText = "ProcedureName"; sqlCommand.CommandType = System.Data.CommandType.StoredProcedure; sqlCommand.Parameters.Add("@name",SqlDbType.VarChar,10); //为Command添加参数 sqlCommand.Parameters[0].Value = "Andymore"; //给调用的存储过程变量传递值 Conn.Open(); SqlCommand.ExecuteNoQuery(); Conn.Close();
  使用ExecuteXmlReader()方法和XmlReader的例子:
cmd.CommandText = "Select * From table For XML Auto,XMLData"; XmlReader reader = cmd.ExecuteXmlReader(); While(reader.Read()) { console.writeline(reader.ReadOuterXml()); }
  3、DataReader类

  Read方法使Reader前进到下一个记录,当有多个结果集时用分号分割各select语句,并使用NextResult方法访问下一个结果集,这样可节省与数据库的链接次数。

  访问记录中的字段有两种方法:

  1、Item属性 (直接获取索引指定的条目)
  2、GetXXX方法(该方法根据后缀自动转换类型)如myReader.GetString(1);
  4、DataAdapter类

  每个Adapter分别对应数据库和数据集中的一个Table,数据集中如果有多个table则需要多个adapter填充。

  如第一章节的结构图所示,它有四个属性,每个属性的值是一个Command对象。这四个属性分别是SelectCommand, InsertCommand, UpdateCommand, DeleteCommand 后三个即为设置adapter对象的更新逻辑,如此便可以使用adapter对象的update()方法将对数据集的更改存储到数据库。

  SqlCommandBuilder类会根据SqlDataAdapter对象的SelectCommand属性自动生成adapter的更新逻辑,这样可以减少写许多代码,但是有如下不足:不能用存储过程生成,不能更新多个数据表。

  例如: SqlCommandBuilder cb = new SqlCommandBuilder(da);

  使用Fill方法时会自动打开和关闭数据库连接,已经显式打开的则用完不会自动关闭。

  读取多个表可使用分号隔开语句后 da.Fill(ds) 或者用多个adapter读取数据。

  不推荐用老式的构造Sql语句字符串的方法来改变参数,用command.parameters.add方法。
  5、其它数据提供程序类

  除了四个核心对象外还有如下几个常用对象:

  Transaction: 事务处理
  Parameter: 用来定义Sql语句和存储过程中使用的参数。
  CommandBuilder:用于自动生成DataAdapter的命令属性。
  Exception:数据处理异常类
  Error:
  ClientPermission:
// 为存储过程添加参数 SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Value = Int32.Parse(customerID); myCommand.Parameters.Add(parameterCustomerID); SqlParameter parameterFullName = new SqlParameter("@FullName", SqlDbType.NVarChar, 5); parameterFullName.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterFullName);
0
相关文章