DataRow drr = dt.NewRow()
dt.Rows.InsertAt(drr, h)
这里的h 就是要插入的第几行。
DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。其他使用DataTable的对象包括DataSet和DataView。
DataTable 表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他 .NET Framework 对象使用,最常见的情况是作为 DataSet 的成员使用。
可以使用相应的 DataTable 构造函数创建 DataTable 对象。 可以通过使用 Add 方法将其添加到 DataTable 对象的Tables 集合中,将其添加到 DataSet 中。
也可以通过以下方法创建 DataTable 对象:使用 DataAdapter 对象的 Fill 方法或 FillSchema 方法在 DataSet 中创建,或者使用 DataSet 的 ReadXml、ReadXmlSchema 或InferXmlSchema 方法从预定义的或推断的 XML 架构中创建。 请注意,将一个 DataTable 作为成员添加到一个 DataSet 的 Tables 集合中后,不能再将其添加到任何其他 DataSet 的表集合中。
初次创建 DataTable 时,是没有架构(即结构)的。 要定义表的架构,必须创建 DataColumn 对象并将其添加到表的Columns 集合中。 您也可以为表定义主键列,并且可以创建Constraint 对象并将其添加到表的 Constraints 集合中。 在为DataTable 定义了架构之后,可通过将 DataRow 对象添加到表的 Rows 集合中来将数据行添加到表中。
创建 DataTable 时,不需要为 TableName 属性提供值,您可以在其他时间指定该属性,或者将其保留为空。 但是,在将一个没有 TableName 值的表添加到 DataSet 中时,该表会得到一个从“Table”(表示 Table0)开始递增的默认名称 Tablen。
你新添加的两行和之前那一行的结构是不一样的,你调用的DataTable 肯定对原有的那一行的table做出调整,才会固定左4列 而你动态添加的那两行并没有调用到 datatable 函数 肯定不能固定我们据。首先我们需要打开一个联结,我们的数据库还是用上一节的吧:)string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}DBQ=c:/test/test.mdb"string strComm = "select * from UserList"ADOConnection MyConnection = new ADOConnection(MyConnString)ADODataSetCommand MyComm = new ADODataSetCommand(strComm,MyConnection)这里我们为了讲解方便,只在DataSet存入一个表的内容:DataSet MyDataSet = new DataSet()MyComm.FillDataSet(MyDataSet,"UserList")此时我们就获得了一个拥有UserList表数据的DataSet。在讲解DataSet之前,我们还需要了解DataSet的结构下面是DataSet的结构树DataSet RelationsCollectionExtendedPropertiesTablesCollection DataTables RowsColumns其它由于我们研究的是DataTable,其它的我们暂时不管他们。一个DataSet中包含多个DataTable,一个DataTable又包含有多个Row,这就是我们 *** 作DataSet的基础啦:)添加数据添加一数据,从上面的列表中我们可以看出,其实就是添加一行Row,这里我们也来演示一下如何添加一行数据,我们程序一切以DataSet为顶点,呵呵,如果TablesCollection,RowsCollection下去的话,还有一些烦人的dt.AcceptChanges这些方法的调用,很烦人,还是一次搞定吧。DataRow dr=MyDataSet.Tables["UserList"].NewRow()dr["UserName"] = "周讯"dr["ReMark"] = "100"dr["Comment"] = "漂亮MM";MyDataSet.Tables.Rows.Add(dr)第一行,我们建立一个新的数据行,它用来储存我们新加入的数据。然后我们在这个数据行中加入我们需要的数据。dr["UserName"]表明是对UserName字段进行添加,你可以使用dr[1]来添加信息,但是这需要我们事先知道字段在数据表的位置,而且在不知道数据表结构的情况很难知道我们添加的数据的对应情况,所以还是用字段名为好。最后我们使用RowsCollection的Add方法,将我们新建这一行加入到数据表中。修改数据知道如何添加数据后,修改数据也是很简单的事情了.MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飞刀大哥"这样我们就修改了第一行数据中的UserName字段。删除数据删除数据,主要是使用RowsCollection提供的Delete方法,看下面的程序也是很简单的事情啦:)MyDataSet.Tables["UserList"],Rows[0].Delete()这一行数据就已经被删除了。恢复数据有时候我们添加/修改数据会出现错误,这时候,就需要恢复原来的数据。下面的程序,显示如何判断是否有错误发生:if(MyDataSet.HasErrors){MyDataSet.RejectChanges()} 首先我们检查DataSet中是否有错误发生,如果有就使用RejectChanges()方法,恢复DataSet中的数据。注意这里恢复是在DataSet中所有表以及表中DataRow中的数据,也就是在此交次 *** 作的数据全部恢复。如果我们只需要恢复部分内容,我们可以使用DataTable或DataRow的RejectChanges(),这里就不详细讲解了,使用方法和DataSet一样,只是 *** 作的对像不同而已。探测DataSet是否有改动我们在将DataSet送交给数据库去保存去,我们需要看看这个DataSet是否已经被改动了。如果没有改动,我们也就没有必要去修改数据库了。if(MyDataSet.HasChanges){//保存}else{//不进行任何 *** 作}更新数据库我们上面的 *** 作,都只是针对DataSet的,没有 *** 作数据库,但是我们的目的还是要将数据保存到数据中去,所以我们这里就需要调用DataSetCommand的Update方法。下面的程序显示如何将DataSet的数据交给数据库。MyComm.Update(MyDataSet)很简单的一句,呵呵。这里要注意,如果一个DataSet中包含有多个表,而我们只更新一个,那我们就必须写明更新的数据表名:MyComm.Update(MyDataSet,"UserList")当Update方法被调用后,DataSetCommand会将数据库中的数据与DataSet中的数据相比较,对不相同的地方进行更新。对于DataSet的 *** 作,我们这里只讲这么多,其实DataSet的方法和属性有很多,功能也很全,我想现在这里的所讲的功能,对一般的 *** 作已经足够了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)