|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。
DataSet是ADO.NET开辟职员为便利数据处置开辟出来的,是数据的汇合,是为办理DataReader的缺点计划的,DataReader数据处置速率快,但它是只读的, 并且一旦移到下一行,就不克不及检察上一行的数据,DataSet则能够自在挪动指针。DataSet的数据是与数据库断开的。DataSet还可用于多层使用程序中,假如使用程序运转在两头层的营业工具中来会见数据库,则营业工具需将脱机数据布局传送给客户使用程序。
DataSet的功效:扫瞄、排序、搜刮、过滤、处置分级数据、缓存变动等。还能够与XML数据交换。DataSet中可包含多个DataTable,可将多个查询布局存到一个DataSet中,便利操纵,而DataTable中又包含多个DataRow、DataColumn,可经由过程这些DataRow、DataColumn来检察、操纵个中的数据,而需将操纵了局前往给数据库的话,则能够挪用DataAdapter的Update办法。
DataSet的操纵:
DataSetds=newDataSet();
DataTabledt=newDataTable("newTable");
ds.Tables.Add(dt);DataSetds=newDataSet();
DataTabledt=ds.Tables.Add("newTable");
上述两种办法都能够在DataSet中增加一个DataTable,看必要而举行选择。增加DataTable后,需向个中增加行和列。
DataSetds=newDataSet();
DataTabledt=ds.Tables.Add("newTables");
DataColumncol=dt.Columns.Add("newColumn",typeof(int));
col.AllowDBNull=false;
col.MaxLength=4;
col.Unique=true;
上述代码向DataSet中的DataTable中增加名为”newColumn”,范例为int且不为空,最年夜长度为4和独一性为真的列。
dt.PrimaryKey=newDataColumn[]{dt.Columns["ID"]}
这段代码是持续下面代码的,为一个DataTable中增加一个主键列,主键列是一个数据组,若有多个主键,只需在数组中增加一个列便可。以下:
dt.PrimaryKey=newDataColumns[]{dt.Columns["OrderID"],dt.Columns["ProductID"]}
增加外键:
ForeignKeyConstraintfk;
fk=newForeignKeyConstraint(ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);
ds.Tables["Orders"].Constraints.Add(fk);
//上述代码假设已为Cusomers表和Orders创立了主键,此句为增加外键束缚。
上述是依据Customers表和Orders表的CustomerID来创立束缚。
上面先容修正DataRow中的内容:
DataRowdr=ds.Tables["Customer"].Rows.Find("ANTON");
if(dr==null)
else
{
dr.BeginEdit();
dr["CompanyName"]="newValue";
dr["ContactName"]="newValue2";
dr.EndEdit();
}
//下面代码经由过程Row汇合的Find办法来在DataTable中的行举行定位,找到"ANTON"行,再修正"ANTON"行中CompanyName列和ContactName列的值。经由过程BeginEdit和EndEdit来缓存对行的修正,还可挪用CancelEdit为作废修正。
判别某列是不是为空值:
DataRowdr=ds.Tables["Customers"].Rows.Find("aaa");
if(dr.IsNull("ContactName");
..
else
dr["ContactName"]=DBNull.Value
//这里判别ContactName列是不是为空,假如不是则为其赋空值,呵,很无厘头的做法,这里只为演示为列赋空值的做法。
删除DataRow:
有两种办法能够删除DataRow,Delete办法和Remove办法和RemoveAt办法。其区分是Delete办法实践上不是从DataTable中删撤除一行,而是将其标记为删除,仅仅是做个暗号,而Remove办法则是真实的从DataRow中删除一行,RemoveAt办法是基本行的索引来删除。列:
DataRowdr=ds.Tables["table"].Rows.Find("a");
ds.Tables["table"].Remove(dr);
或
ds.Tables["table"].Remove(index);
//dr为"a"地点的行,查出后将其删除,index为"a"地点的索引号。关于DataSet中的其用法,参照MSDN根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。 |
|