为SqlCommand加一个参数
其Direction = ParameterDirection.ReturnValue

解决方案 »

  1.   

    int rtn = (int)SqlCommand1.ExecuteScalar();
      

  2.   

    赞同
    ! uno(钢盅郭子) (
      

  3.   

    给你个例子:  SqlConnection conPortal = new SqlConnection(CommunityGlobals.ConnectionString);
                SqlCommand cmdAdd = new SqlCommand( "Community_DiscussAddPost", conPortal);
                cmdAdd.CommandType = CommandType.StoredProcedure;
                
                cmdAdd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                cmdAdd.Parameters.Add("@communityID", CommunityGlobals.CommunityID);
                cmdAdd.Parameters.Add("@sectionID", sectionID);
                cmdAdd.Parameters.Add("@username", username);
                cmdAdd.Parameters.Add("@topicID", topicID);
                cmdAdd.Parameters.Add("@title", title);
                cmdAdd.Parameters.Add("@briefDescription", briefDescription);
                cmdAdd.Parameters.Add("@metaDescription", ContentPageUtility.CalculateMetaDescription(briefDescription));
                cmdAdd.Parameters.Add("@metaKeys", ContentPageUtility.CalculateMetaKeys(briefDescription));
                cmdAdd.Parameters.Add("@moderationStatus", moderationStatus );
                cmdAdd.Parameters.Add("@isPinned", isPinned);
                cmdAdd.Parameters.Add("@isAnnouncement", isAnnouncement);
                cmdAdd.Parameters.Add("@isLocked", isLocked);
    cmdAdd.Parameters.Add("@bodyText", SqlDbType.NText);
    cmdAdd.Parameters[ "@bodyText" ].Value = bodyText;
                
                conPortal.Open();
                cmdAdd.ExecuteNonQuery();            //取得返回值
                int result = (int)cmdAdd.Parameters["@RETURN_VALUE"].Value;
      

  4.   

    uno(钢盅郭子) :
    能给个小例子吗?谢谢:)
      

  5.   

    给个例子:使用 Command 对象的 ExecuteNonQuery 方法
    此示例使用 ExecuteNonQuery 方法运行查询并返回参数值。ExecuteNonQuery 还返回在运行此查询后受影响的记录数。但是,ExecuteNonQuery 不从该存储过程返回任何行或列。如果只需要知道更改的行数,那么在使用 INSERT、UPDATE 或 DELETE 语句时,ExecuteNonQuery 方法就特别有用。在存储过程中仅使用 SELECT 语句时,您将收到 -1,因为查询不会影响任何行。
    在运行 SQL Server 的服务器上创建下面的存储过程: Create Procedure TestProcedure3
      (
    @au_idIN varchar (11),
    @au_fnam varchar (30)
      )As
    /* set nocount on */ 
    Update authors set au_fname = @au_fnam
    where au_id = @au_idin
    return (5)
    对 System 和 System.Data 名称空间使用 Imports 语句,这样,在后面的代码中就不需要在这些名称空间中限定声明了。必须在任何其他声明之前使用 Imports 语句。请确保只复制您所选的提供程序的代码。 SQL 客户机 Imports System.Data.SqlClient
    OLE DB 数据提供程序 Imports System.Data.OleDb
    将下面的代码添加到 Form_Load 事件中: SQL 客户机 Dim PubsConn As SqlConnection = New SqlConnection & _
    ("Data Source=server;integrated security=sspi;" & _
    "initial Catalog=pubs;")Dim testCMD As SqlCommand = New SqlCommand & _
    ("TestProcedure3", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetValue As SqlParameter = testCMD.Parameters.Add & _
    ("RetValue", SqlDbType.Int)
    RetValue.Direction = ParameterDirection.ReturnValue
    Dim auIDIN As SqlParameter = testCMD.Parameters.Add & _
    ("@au_idIN", SqlDbType.VarChar, 11)
    auIDIN.Direction = ParameterDirection.Input
    Dim auFname As SqlParameter = testCMD.Parameters.Add & _
    ("@au_fnam", SqlDbType.VarChar, 30)
    auFname.Direction = ParameterDirection.InputauIDIN.Value = "213-46-8915"
    auFname.Value = "Marjorie"
    PubsConn.Open()Dim rvRows As Integer = testCMD.ExecuteNonQuery
    Console.WriteLine(rvRows)
    Console.WriteLine(RetValue.Value)
    OLE DB 数据提供程序 Dim PubsConn As OleDbConnection = New OleDbConnection & _
    ("Provider=SQLOLEDB;Data Source=server;" & _
    "integrated Security=sspi;initial catalog=pubs;")Dim testCMD As OleDbCommand = New OleDbCommand & _
    ("TestProcedure3", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetVal As OleDbParameter = testCMD.Parameters.Add & _
    ("RetVal", OleDbType.Integer)
    RetVal.Direction = ParameterDirection.ReturnValue
    Dim IdIn As OleDbParameter = testCMD.Parameters.Add & _
    ("@au_idIN", OleDbType.VarChar, 11)
    IdIn.Direction = ParameterDirection.Input
    Dim FnameIn As OleDbParameter = testCMD.Parameters.Add & _
    ("@au_fname", OleDbType.VarChar, 30)
    FnameIn.Direction = ParameterDirection.InputIdIn.Value = "213-46-8915"
    FnameIn.Value = "Marjorie"PubsConn.Open()Dim intRowAffected As Integer = testCMD.ExecuteNonQueryConsole.WriteLine("Number of Rows affected:" & intRowAffected)
    Console.WriteLine(RetVal.Value)
    修改 Connection 对象的连接字符串,以便指向运行 SQL Server 的服务器。
    运行此代码。"输出"窗口显示受影响的行数 (intRowAffect) 和返回参数的值。