1\ 我看MSDN上的解释是:ExecuteScalar()函数返回首行首列的值,没有则为空.
2\ 我昨天用SqlCommand定义了一个变量,执行了一个插入语句,即插入一行,为什么用ExecuteScalar()函数,返回值为空,而非新插入行的首行首列;但是插入操作确定成功了,在数据库里有更新.
3\ 我看MSDN上的例子,ExecuteScalar()函数执行前,对于SqlCommand还定义了它的属性值 Parameters,不知道和这有没有关系.
4\ 顺便问下,SQLSERVER中的@代表啥意思.
5\ 谢谢大家!

解决方案 »

  1.   

    本帖最后由 net_lover 于 2010-09-10 09:20:30 编辑
      

  2.   

    2\
    ExecuteScalar只针对select
    4\ 顺便问下,SQLSERVER中的@代表啥意思.
    代表parameter
      

  3.   

    如果非想用ExecuteScalar,那么在插入后再select
    string sql ="insert ……;select @@IDENTITY";
      

  4.   

    SqlCommand.ExecuteScalar 方法 
    执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
    ExecuteNonQuery 
    您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。楼主没仔细看哦
      

  5.   

    ExcuteNonQuery():执行不返回行的语句,主要是insert,update,delete
    ExcuteScalar():返回单个值(查询返回的结果集中第一行的第一列),如:select Count(*) from table.
    ExcuteReader():执行查询命令,返回DataReader对象。Parameters:只是用于将C#的变量类型与数据库变量类型转化一致,
      

  6.   

    用3楼的方法实现了,原来是要在后边加上select
    谢谢大家.我的分不多.在此表示感谢了.