暑假ASP.NET学习笔记——7月27号

20 篇文章 0 订阅

CommandText= "select @userName=AuthorName from Authorwhere AuthorID=100521136;";注意SQL语句中可以后输出型参数

还有注意,如果DataAdapter中的Command的CommandText="select * from Authorwhere AuthorID=1005211360;",并且Author表中没有AuthorID=100521136对应的列,则DataAdapter对DataSet填充后,DataSet中的表数为1,行数为1,不过内容为空,这一点要切记

    SQL中的Bit型数据,在C#中对应的是True(1),False(0),Null(Null),在使用时,一定要弄清楚,注:Null(Null)这种情况没有测试

通过DataAdpter对象实现对数据源(数据库)中的数据的删除操作,例子:

    其中,datA表示DataAdpter对象,ds表示的是DataSet对象,datT表示的DataTable对象。  

    第一步:定义DeleteCommand命令行,在执行Update函数时,默认执行的删除命令是DeleteCommand命令

datA.DeleteCommand = new SqlCommand("delete from LinkMan where userName=@userName",conn);

[第二步:如果命令行中有参数,就添加参数]

    SqlParameterpara = new SqlParameter("@userName",SqlDbType.NVarChar,15, "userName");

datA.DeleteCommand.Parameters.Add(para);

[第三步:往DataSet中填充数据]

datA.Fill(ds);

    [第四步:获取表]

    datT = ds.Tables[0];

    第五步:执行删除操作,注意只能用Delete函数,不能用Remove或RemoveAt函数

datT.Rows[0].Delete();

第六步:执行回发操作

datA.Update(datT);

在这六步中,第一、五、六步是必须的,而且在执行删除操作后不能让DataTable调用AcceptChanges函数,这个必须记住,因为如果调用AcceptChanges函数,则在DataTable被标记的列,会从DataTable中删除,这样就导致DataAdapter执行Update函数,会误认为没有可删除的行。对于必须采用Delete函数,而不能用Remove或RemoveAt函数,原因也是如此,因为Remove和RemoveAt函数是从DataTable中直接删除数据,而不是标识数据行。

对于更新、插入操作,同删除操作类似,不过对于更新操作指定命令行时,需要注意。MSDN:请注意,在 UPDATE语句的 WHERE 子句中指定的参数设置为使用 SourceColumn 的 Original 值。 这一点很重要,因为 Current 值可能已被修改,可能会不匹配数据源中的值。 Original 值是用于从数据源填充 DataTable 的值例子:

dataAdpater.UpdateCommand= new SqlCommand(

           "UPDATE Categories SETCategoryName = @CategoryName " +

           "WHERE CategoryID =@CategoryID", connection);

dataAdpater.UpdateCommand.Parameters.Add(

           "@CategoryName",SqlDbType.NVarChar, 15, "CategoryName");

SqlParameterparameter = dataAdpater.UpdateCommand.Parameters.Add(

          "@CategoryID",SqlDbType.Int);

        parameter.SourceColumn ="CategoryID";

       // 这一步对于更新操作是必须的,因为原始数据已经被修改了

       parameter.SourceVersion = DataRowVersion.Original;

还有如果DataAdapter对象操作的表只是一个表时,可以通过定义对象SqlCommandBuilder来生成默认的删除、插入、更新命令行。

例子:SqlCommandBuilder cmdBuilder = newSqlCommandBuilder(datA);

这样就生成了默认的命令行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值