仓酷云
标题:
MSSQL网站制作之利用ADO.NET轻松利用数据库(二)
[打印本页]
作者:
小妖女
时间:
2015-1-16 22:33
标题:
MSSQL网站制作之利用ADO.NET轻松利用数据库(二)
每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。ado|数据|数据库
起首,ADO.NET中利用了DataAdapter来处置与数据库的联机与脱机。事先开辟职员计划了DataAdapter是为了可以处置脱机数据,便利操纵,关于这一点,只需挪用其Fill()办法便可,这时候会在DataSet中创立一个新的名为“Table“的DataTable.要从头指命名可用DataAdapter.Fill(DataSet,“Tabelname“)。此时connection也封闭了。DataAdapter既能够用来提交查询,并将了局存储到DataSet中,也能够用来向数据库传送变动。仅仅利用其Update办法便可到达向数据库提交存储地DatSet中的变动。
DataAdapter将查询的了局存储在DataSet或DataTable工具中,当实行这一历程的时分,DataAdapter利用了一个Command来与数据库通信,并在外部利用了DataReader来猎取查询了局,最初才将了局复制到DataSet新行中往。这也是Fill的历程。假如有两个DataAdapter工具,都利用不异的Connection工具,在创立的时分就会创立两个Connection工具,而不是统一个,这类情形的办理计划是:
SqlConnectioncon=newSqlConnection("server=localhost;database=Northwind;Trusted_Connection=Yes;")
SqlDataAdapterda=newSqlDataAdapter("selectCategoryID,DescriptionfromCategories",con);
SqlDataAdapterda=newSqlDataAdapter("selectCategoryID,DescriptionfromCustomers",con);
而不是将查询字符串,独自写成一行。
偶然候大概其实不但愿DataSet中的架构与数据库中的架构不异,这类情形的办理计划之一是能够接纳别号的办法,即selectidasProductID,amountasProductAmountfromproduct;别的一种办理计划就是利用DataAdapter供应的TableMappings汇合机制,经由过程它就能够将查询了局映照到DataSet布局中,这类办法更便利,更天真。TableMappings属性前往一个DataTableMappingsCollection工具,个中包括了一组DataTableMappings,只需DataSet中响应的表称号与数据库中的表名不异,便可以利用它来创立一个映照(DataSet中能够有多个表)。TableMappings里另有一个ColumnMappings属性,其用法与TableMappings类似。其道理是DataAdapter从数据库读取数据后,使用DataReader从了局会合猎取列称号,有一点出格要注重,即只能猎取列称号而没法猎取表称号,DataAdapter事前假定表称号为Table,接着碰到映照语句则举行表映照。不说了,看代码:
DataColumnMappingcolMap;
SqlConnectioncon=newSqlConnection("server=localhost;database=Northwind;Trusted_Connection=Yes;");
SqlDataAdapterda=newSqlDataAdapter("selectCategoryID,DescriptionfromCategories",con);
DataSetds=newDataSet();
DataTableMappingtblMap=da.TableMappings.Add("Table","Ca");//这里Table为关头,映照表名为Ca
colMap=tblMap.ColumnMappings.Add("CategoryID","ID");//映照列表
colMap=tblMap.ColumnMappings.Add("Description","形貌");
//Response.Write(tblMap.DataSetTable.ToString());
da.Fill(ds);
DataTabledt=ds.Tables["Ca"];//这里是映照后的表名,假如仍为数据库的表名,则有效,出格注重
this.DataGrid1.DataSource=dt;
this.DataGrid1.DataBind();
运转代码后就会发明DataGrid1上的列名为ID和形貌(^_^)
(注:利用DataTableMapping之前要前导进名空间System.Data.Common;)
还可使用AddRange办法来简化表和列的映照:(一些代码同下面)
.......
DataTableMappingtblMap=da.TableMappings.Add("Table","Ca");DataColumnMapping[]colMapArray=newDataColumnMapping[]{newDataColumnMapping("CategoryID","产品号"),newDataColumnMapping("Description","形貌")};tblMap.ColumnMappings.AddRange(colMapArray);
......
这类映照干系只能从数据库中读取展现给用户,假如要将映照后的Table的变动提交给数据库,这时候库发明个中列与库中列分歧,便会产生非常,DataAdapter同时也供应了MissingMappingAction属性来处置。
DataAdapter1.MissingMappingAction=MissingMappingAction.Passthrough/Ignore/Error
它承受MissingMappingAction的列举值,Passthrough这个值暗示假如在库中找不到与DataSet中不异列的话,就将此列映照到库中,Ignore列举值暗示疏忽示呈现的列,Error暗示找不到响应的列则抛出非常。
分页:
分页在使用中是常有的事,而DataAdapter自己也供应了分页的复杂功效,如:DataAdapter1.Fill(dataset,startrow,rownum,“tablename“)这类功效用于数据量较小的查询就能够,但当有大批数据的时分,就会发明这类分页的成绩的存在。它的道理是假设有一百行数据,分红十页,每页十行,当猎取每页的时分,前往前10行,再接着,第二页,删除前10行而猎取接下的10行,在这一次中,只是为了猎取10行数据,但数据库却前往了20行,依此类推,第10页的时分就会前往100行,而DataAdapter自己就帮我们删除90行,由于我们看上往前往的仍是10行,这类功能太低。因而本篇持续先容别的一种功能较高的分页办法。实践上这类分页办法是将上一页最初一行的键值存储上去,间接在SQL语句中就过滤失落了,不象后面那种到DataAdapter这边才过滤失落。例:
con=newSqlConnection("server=localhost;database=Northwind;Trusted_Connection=Yes;");
da=newSqlDataAdapter("selecttop50CustomerID,CompanyNamefromCustomerswhere CustomerID>BOTTM",con);
ds=newDataSet();
da.Fill(ds,"Categories");
this.DataGrid1.DataSource=ds.Tables["Categories"];this.DataGrid1.DataBind();
con.Close();
这里假设上一页最初一个键值为”BOTTM”,能够将它用参数替换失落,如许就查出了在BOTTM以后的50行。这类办法完成复杂效力也高。
InnoDB数据表的索引,与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。
作者:
若天明
时间:
2015-1-19 16:25
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
作者:
小魔女
时间:
2015-1-28 08:28
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
作者:
深爱那片海
时间:
2015-2-5 20:14
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
作者:
金色的骷髅
时间:
2015-3-3 21:06
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
作者:
因胸联盟
时间:
2015-3-11 13:47
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
作者:
爱飞
时间:
2015-3-18 21:23
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
作者:
再见西城
时间:
2015-3-26 18:53
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2