MSSQL教程之ADO.NET念书条记系列之------SqlComman...
支持多种存储引擎。ado|command|条记|工具1、特性先容
⒈SqlCommand:暗示要对SQLServer数据库实行的一个Transact-SQL语句或存储历程。
⒉SqlDataReader:供应一种从数据库读取只进的行流的一种体例。若要创立SqlDataReader,必需挪用SqlCommand工具的ExecuteReader办法,而不间接利用机关函数。应当尽量敏捷的封闭SqlDataReader工具。
⒊SqlParameter:暗示SqlCommand的参数,也能够是它到DataSet列的映照。
2、利用先容
⒈创立SqlCommand工具:
stringstrConn,strSQL;
strConn=”…………”;
strSQL=”SelectCustomerID,CompanyNamefromCustomers”;
SqlConnectioncn=newSqlConnection(strConn);
cn.Open();
SqlCommandcmd;
cmd=newSqlCommand();
cmd.CommandText=strSQL;
cmd.Connection=cn;
cmd=newSqlCommand(strSQL,cn);
⒉实行无前往行的查询:
stringstrConn,strSQL;
strConn=”……”;
strSQL=”UpdateCustomersSETCompanyNme=’NewName’whereCustomersID=’ALFKI’”;
SqlConnectioncn=newSqlConnection(strConn);
cn.Open();
SqlCommandcmd=newSqlCommand(strSQL,cn);
intRecordsAffercted=cmd.ExecuteNonQuery();
if(RecordsAffercted==1)
……
else
…………
⒊用SqlDataReader工具反省查询了局:
①猎取了局
stringstrConn,strSQL;
strConn=”……”;
SqlConnectioncn=newSqlConnection(strConn);
cn.Open();
strSQL=”SelectCustomerID,CompanyNamefromCustomers”;
SqlCommandcmd=newSqlCommand(strSQL,cn);
SqlDataReaderrdr=cmd.ExecuteReader();
While(rdr.Read())
Console.Writeline(rdr[“CustomerID”]+rdr[“CompanyName”]);
Rdr.Close();
②更快猎取
Ⅰ利用基于序号的查找
……
SqlDataReaderrdr=cmd.ExecuteReader();
intCustomerIDOrdinal=rdr.GetOrdinal(“CustomerID”);
intCompanyNameOrdinal=rdr.GetOrdinal(“CompanyName”);
while(rdr.Read())
Console.WriteLine(rdr+rdr);
rdr.Close();
Ⅱ利用得当的范例指定Get办法
……
SqlDataReaderrdr=cmd.ExecuteReader();
intCustomerIDOrdinal=rdr.GetOrdinal(“CustomerID”);
intCompanyNameOrdinal=rdr.GetOrdinal(“CompanyNameOrdinal”);
while(rdr.Read())
Console.WriteLine(rdr.GetString(CustomerIDOrdinal)+rdr.GetString(CompanyNameOrdinal));
rdr.Close();
③猎取多个了局
…
cn.Open();
stringstrSQL=”selectCustomerID,CompanyNamefromCustomers;”+“selectOrderID,CustomerIDfromOrders;”;
SqlCommandcmd=newSqlCommand(strSQL,cn);
SqlDataReaderrdr=cmd.ExecuteReader();
do
{
while(rdr.Read())
Console.WriteLine(rdr+rdr);
Console.WriteLine();
}while(rdr.NextResult());
⒋实行前往单值的查询:
…
cn.Open();
SqlCommandcmd=newSqlCommand(“selectcount(*)fromcustomers",cn);
intCustomres=Convert.ToInt32(cmd.ExecuteScalar());
⒌实行参数化查询和挪用存储历程:
SqlCommandcmd=newSqlCommand("DelQXRY",cn);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameterparameterRoleID=newSqlParameter("@ID",SqlDbType.Int,4);
parameterRoleID.Value=444;
cmd.Parameters.Add(parameterRoleID);
cn.Open();
cmd.ExecuteNonQuery();
⒍从输入参数中猎取数据:
CreateProcedureGetCustomer(@CompanyNamenvarchar(30)output,@CustomerIDnchar(5))ASSELECT@CompanyName=CompanyNamefromCustomerswhereCustomerID=@CustomerID
…
cmd.Parameters[“@CompanyName”].Direction=ParameterDirection.Output;
⒎在Transaction中实行查询:
…
cn.Open();
SqlTransactiontxn=cn.BeginTransaction();
StringstrSQL=”InsertintoCustomers(…)values(…)”;
SqlCommandcmd=newSqlCommand(strSQL,cn,txn);
intRecordAffected=cmd.ExecuteNonQuery();
if(RecordAffected==1)
{
txn.Commit();
}
else
{
txn.RollBack();
}
3、属性办法事务先容
⒈SqlCommand
Ⅰ属性
①CommandText:要实行的Transact-SQL语句或存储历程。默许为空字符串。
②CommandTimeOut:守候命令实行的工夫(以秒为单元)。默许为30秒。
③CommandType:CommandType值之一。默许值为Text。
④Connection:与数据源的毗连。默许值为空援用
⑤Parameters:Transact-SQL语句或存储历程的参数。默许为空汇合。
⑥Transaction:指定用于查询的事件处置
⑦UpdateRowSource:假如经由过程挪用DataAdapter工具的Update办法来利用Command,那末该属性就用于把持影响以后DataRow的查询了局(默许值为Both)
Ⅱ办法
①Cancel:试图作废SqlCommand的实行。假如没有要作废的内容,则甚么都不会产生。但假如有命令阃在实行,而作废实验失利,则不会天生非常。Cancel办法还会招致Command工具删除DataReader工具上一切未读的行。
②CreateParameter:为查询创立一个新参数。
③ExecuteNonQuery:对毗连实行Transact-SQL语句并前往受影响的行数。关于UPDATE、INSERT和DELETE语句,前往值为该命令所影响的行数。关于一切其他范例的语句,前往值为-1。假如产生回滚,前往值也为-1。
④ExecuteReader:将CommandText发送到Connection并天生一个SqlDataReader。
publicSqlDataReaderExecuteReader(CommandBehavior);
⑤ExecuteScalar:实行查询,并前往查询所前往的了局会合第一行的第一列。疏忽分外的列或行。
⑥ExecuteXmlReader:将CommandText发送到Connection并天生一个XmlReader。
⑦PrePare:在SQLServer的实例上创立命令的一个筹办版本。在挪用Prepare之前,应指定要筹办的语句中的每一个参数的数据范例。
⑧ResetCommandTimeOut:将CommandTimeout属性设置为默许值30秒。
Ⅲ事务
⒉SqlDataReader
Ⅰ属性
①Depth:猎取一个值,该值唆使以后行的嵌套深度。最外层表的深度为零。SQLServer.NETFramework数据供应程序不撑持嵌套并老是前往零值。
②FieldCount:猎取以后行中的列数。假如未放在无效的纪录会合,则为0;不然为以后行中的列数。默许值为-1。实行不前往行的查询后,FieldCount前往0。
③HasRows:假如SqlDataReader包括一行或多行,则为true;不然为false。
④IsClosed:假如SqlDataReader已封闭,则为true;不然为false。
⑤Item:猎取以本机格局暗示的列的值。
⑥RecordsAffected:已变动、拔出或删除的行数;假如没有任何行遭到影响或语句失利,则为0;-1暗示SELECT语句。
Ⅱ办法
①Close:封闭SqlDataReader工具。假如前往值和查询影响的纪录的数目不主要,则能够在挪用Close办法前挪用联系关系的SqlCommand工具的Cancel办法,从而削减封闭SqlDataReader所必要的工夫。
②GetName:猎取指定列的称号。
③GetOrdinal:在给定列称号的情形下猎取列序号。
④GetValue:猎取以本机格局暗示的指定列的值。
⑤GetValues:猎取以后行的汇合中的一切属性列。
⑥IsDBNull:猎取一个值,该值唆使列中是不是包括不存在的或短少的值。假如指定的列值与DBNull等效,则为true;不然为false。
⑦NextResult:当读取批处置Transact-SQL语句的了局时,使数据读取器行进到下一个了局。假如存在多个了局集,则为true;不然为false。
⑧Read:使SqlDataReader行进到下一笔记录,假如存在多个行,则为true;不然为false。必需挪用Read来入手下手会见任何数据。在某一工夫,每一个联系关系的SqlConnection只能翻开一个SqlDataReader,在上一个封闭之前,翻开另外一个的任未尝试都将失利。
Ⅲ事务
⒊SqlParameter
Ⅰ属性
①DbType:猎取或设置参数的DbType。默许值为String。
②Direction:猎取或设置一个值,该值唆使参数是只可输出、只可输入、双向仍是存储历程前往值参数。默许值为Input。
③IsNullable:猎取或设置一个值,该值唆使参数是不是承受空值。假如承受空值,则为true;不然为false。默许为false。
④ParameterName:猎取或设置SqlParameter的称号。
⑤Size:猎取或设置列中数据的最年夜巨细(以字节为单元)。默许值是从参数值推导出的。
⑥SqlDbType:猎取或设置参数的SqlDbType。默许为NVarChar。SqlDBType和DbType是互相毗连的。设置DBtype会将SqlDbType变动为撑持的SqlDbType。
⑦Value:猎取或设置该参数的值。默许为空。
Ⅱ办法
Ⅲ事务
支持多种存储引擎。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关 我们学到了什么?思考问题的时候从表的角度来思考问 SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。 我个人认为就是孜孜不懈的学习 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
页:
[1]