学习ADO.NET

发布时间:2016-12-7 1:57:05 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"学习ADO.NET",主要涉及到学习ADO.NET方面的内容,对于学习ADO.NET感兴趣的同学可以参考一下。

数据的规范化:是把数据尽可能的分解到多个表上,最小化重复相同数据的次数。  ADO.net的主要对象元素:  数据源:通常指的是一个关系数据库,如SQLserver等 托管的数据供应程序:提供数据仓库通信的功能 如ODBC等 Connection对象:建立一个页面程序与数据库驱动的通信管道 Command对象:一个包含读写数据指令的工具 DataReader/DataSet对象:存储已读出或写入数据的地方 .Net控件:主要指<asp:datagrid>  Connection对象:主要用于连接数据源 通过Open()方法打开连接字符串中的连接 连接字符串包含3各部分的信息: >> 第一部分指定要使用的供应程序或驱动程序的种类 //server=localhost >> 第二部分指定要使用的数据库     //database=Mydatabase  >> 第三部分通常包含安全信息,包括用户名,密码等 //uid=foolboy;pwd=Mypasswd  Command对象和DataReader:读取和修改数据 Command用法:  objCommand = new OleDbCommand(strSQL,objConnection); objDbDataReader = objCommand.ExecuteReader(); DataReader:存储数据 读取方法 DataReader["FIELD"]  数据绑定: 是在数据源和数据使用者创建一个连接的过程。  主要是指绑定到DataGrid上 DataReader的局限: >> 只能读取数据,不能修改数据 >> 只能向前循环数据 >> 只能处理一个表的数据 DataSet是他的替代品还是DataTable??他们的主要区别?   DataSet和DataTable对象 DataSet表示数据库中的数据,与DataReader不同它可以存储几个表和他们之间的关系。 在使用表示主要要用到下面4各对象: >> DataTable: 表示表本身 >> DataSet: 核心对象,建立多表之间的adhoc关系,可以一表中的一行和另一表的一行关联起来 >> DataAdapter: 用于结果从Connection传给Dataset。Fill()方法把数据拷贝到DataSet中, Update()方法把DataSet中的数据烤回数据源。 >> DataView: 表示DataSet中存储的DataTables的特定视图  >> DataGrid: 等的DataSource最终只绑定到某具体DataView上  ADO.net关于SQL Server的对象 sqlConnection sqlCommand sqlDataAdapter  数据异常处理  常见问题: >> 代码包含对不存在的ADO.NET对象的引用 >> 代码请求的数据为NULL不存在  >> 代码的连接字符串错误 >> 包含不存在的列或表的引用 >> 没有提供正确的UserID和Password >> 代码是用语法不正确的SQl语句 >> 网络问题导致数据库连接问题         处理方法:  利用 try ....catch  捕获错误信息  更新数据方法  问题:  >> 如何更新?我们的修改都是基于断开连接的,如果将修改后的结果写入数据库中?   >> 如何处理同步更新?两个人先后对更新了同一数据,怎么办?结果会被覆盖么?  DataSet & DataTable & DataRow关系如下所示:        -------------------------------------- |            DataSet                 | |      |-------------------------|   | |      |     DataTable           |   | |      |                         |   |   |      |      |----------------| |   | |      |      |    DataRow     | |   | |      |      |----------------| |   | |      |      |    DataRow     | |   | |      |      |----------------| |   |        |      |-------------------------|   | |------------------------------------|                            DataTable = DataSet.Tables["TName"]; DataRow = DataTable.Rows; string strFirstName = DataRow[0]["FirstName"];  这里的更新的实质都是对数据集DataSet的更新方法,没有涉及到对数据源的更新 更新操作思路: 1.添加记录 (添加行)  添加记录首先需要声明两个变量 DataTable ,DataRow  其中DataTable需要实例化到具体的数据集中的某个table  DataRow = DataTable.NewRow()  声明为Table的新Row  再对DataRow进行赋值,调用DataTable.Rows.Add(DataRow)即可 2.修改纪录 (编辑行)  首先声明一个变量 DataRow[] objRows用来存储要编辑的行  objRows = DataTable.Select("查询条件");   如果是一行,可以这样 objRows = DataTable.Rows[3];  再对其进行修改 如 objRows[0][FIELD1]=""  objRows[0][FIELD2]="" 3.删除纪录   如下 DataTable.Rows[5].Delete();   推想:应该可以这样,首先申明一个变量 DataRow[] objRows 用来存储要删除的行  objRows = DataTable.Select("查询条件"); 更新数据源的方法  1,Command对象   更新需要的属性:   Connection    包含数据仓库连接的细节   CommandText   要运行的命令   CommandType   命令的类型 Sql字符或存储过程的名称          Text   表示文本字符串sql          TableDirect 表示表名          StoredProcedure 表示存储过程的名称   Parameters    Parameters对象的一个集合  2,DataAdapter对象   注意DataAdapter和Command的区别?   >> Command主要用于运行命令   >> DataAdapter主要用于为多个命令提供一个存储空间,在数据仓库和DataSet之间提供    双向交互。  哦,一个Command对象只能处理查询,添加,删除,修改中的一种  因此 DataAdapter用四个属性存储四种Command对象  属性如下 SelectCommand,UpdateCommand,InsertCommand,DeleteCommand   3,CommandBuilder对象  OleDbCommandBuilder objBuilder   objBuilder = new OleDbCommandBuilder(DataAdapter)  表示告诉命令生成器可以在哪儿取到SelectCommand,以建立其他的命令.   DataAdapter.UpdateCommand = objBuilder.GetUpdateCommand();  DataAdapter.InsertCommand = objBuilder.GetInsertCommand();  DataAdapter.DeleteCommand = objBuilder.GetDeleteCommand();    注意在这种情况下,SelectCommand必需带有一个主键字段  4.DataAdapter.Update()    DataAdapter.Update(DataSet,"Tablesname");  例如,以下代码确保首先处理表中已删除的行,然后处理已更新的行,然后处理已插入的行。 [C#] DataTable updTable = custDS.Tables["Customers"];  // First process deletes. custDA.Update(updTable.Select(null, null, DataViewRowState.Deleted));  // Next process updates. custDA.Update(updTable.Select(null, null, DataViewRowState.ModifiedCurrent));  // Finally, process inserts. custDA.Update(updTable.Select(null, null, DataViewRowState.Added));  其中DataViewRowState数据视图的操作属性 包括Deleted, ModifiedCurrent,Added,Unchanged等  至此,更新数据仓库工作完成。 [2003-05-28]  使用存储过程  存储过程类似于代码中的函数,它存储在数据服务器上并有一个名称。 为什么要使用存储过程?  1.庞大复杂的SQL语句影响程序代码的阅读  2.由数据库服务器来处理的存储过程比直接使用SQL语句更快,效率更高   要使用存储过程,需要注意的是CommandType设为StoredProccess CommandText为存储过程的名称   eg: objCmd.CommandText = "[Sales by Category]";      objCmd.CommandType = CommandType.StoreProcedure;    使用XML 由于ADO.net设计时就考虑到了XML,它处理XML数据就像是这些数据来自于一个数据库  1,写入XML文件  objAdapter.Fill(objDataSet,"Employees"); //填充结果集  objDataSet.WriteXml(Server.MapPath("Employees.xml"));//写入到xml文件 注意两点:  1,首先用到了DataSet的WriteXml()方法,从DataSet中提取信息并格式化xml  2,Server.MapPath()表示生成文件路径,指向当前应用程序的目录 2,读取XML文件  objDataSet.ReadXml(Server.MapPath("Employees.xml"));  3,将Xml转换为字符串  string strXML,strSchema  strXML = objDataSet.GetXml()  strSchema = objDataSet.GetXmlSchema() 4,一旦XML读入到DataSet中他就同从数据库中读入的数据没有任何区别,也可以进行前面任何的 操作,最终只要将操作的结果集DataSet写入至XML或者数据库都可以  

上一篇:用iBatis实现多条件自由组合查询
下一篇:根据属性多少删除指定条件的重复记录!!!

相关文章

关键词: 学习ADO.NET

相关评论