c# - 将记录插入 sql db 后返回一个值

标签 c# sql insert return

我正在向文本框中输入一些值,并希望将这些值保存到我的 sql 数据库中。现在我只想在 MessageBox 中显示 SQL StoredProcedure 的返回值,以显示插入是否成功。

提交按钮代码:

private void btnAdd_Click(object sender, RoutedEventArgs e)
{            
    if (txtType.Text.Length > 0 && txtNumber.Text.Length > 0 && txtLine1.Text.Length > 0)
    {
        string sOut = "";

        DataManager.SaveAddendum(txtType.Text, txtNumber.Text, txtLine1.Text, txtLine2.Text, txtLine3.Text, txtLine4.Text, sOut);

        MessageBox.Show(sOut);                
    }
}

提交按钮调用的数据管理类:

public static void SaveAddendum(string sType, string sNumber, string sLine1, string sLine2, string sLine3, string sLine4, string sOut)
{
    // Create connection
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ToString());
    // Create command
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "sp_Insert_Addendum";
    // Create and add input parameters
    cmd.Parameters.AddWithValue("@Type", sType);            
    cmd.Parameters.AddWithValue("@Number", sNumber);
    cmd.Parameters.AddWithValue("@Line1", sLine1);
    cmd.Parameters.AddWithValue("@Line2", sLine2);
    cmd.Parameters.AddWithValue("@Line3", sLine3);
    cmd.Parameters.AddWithValue("@Line4", sLine4);

    // Attach connection to command
    cmd.Connection = con;
    // Open connection
    con.Open();
    // Execute command
    //cmd.ExecuteNonQuery();
    sOut = cmd.ExecuteScalar().ToString();            
    // Close connection
    con.Close();
    // Dispose connection
    con.Dispose();
}

存储过程:

ALTER PROCEDURE [dbo].[sp_Insert_Addendum]
-- Add the parameters for the stored procedure here
@Type varchar(3),
@Number varchar(4),
@Line1 varchar(60),
@Line2 varchar(60),
@Line3 varchar(60),
@Line4 varchar(60)
AS
BEGIN   
SET NOCOUNT ON;
BEGIN

    IF EXISTS(SELECT Addendum_Type, Addendum_Number FROM AddendumMst WHERE Addendum_Type = @Type AND Addendum_Number = @Number)
    BEGIN           
        --PRINT N'The addendum already exists.
        SELECT 'Already Exists'
    END
    ELSE
    BEGIN
        INSERT INTO AddendumMst (Addendum_Type, Addendum_Number, Line1, Line2, Line3, Line4) VALUES (@Type, @Number, @Line1, @Line2, @Line3, @Line4)        
        IF @@ERROR <> 0 
        BEGIN               
            --PRINT N'An error occurred inserting the addendum information.';
            SELECT 'Error inserting'
        END
        ELSE
        BEGIN               
            --PRINT N'The addendum has been inserted.';             
            SELECT 'Success'
        END;
    END 
END
END

我的问题 - 消息框显示空白。

最佳答案

您的 SaveAddendum 方法没有返回值。 sOut 是方法本地的。更改您的方法以返回一个值(字符串),然后您可以将其显示在 MessageBox 中。此外,您可以删除 sOut,因为它不是必需的(除非您将其声明为 out 参数,否则它不会按照您的想法执行):

public static string SaveAddendum(string sType, string sNumber, string sLine1, string sLine2, string sLine3, string sLine4)
{

    // Your code

    return sOut;
}

然后当你调用这个方法时,你可以这样做:

string sOut = DataManager.SaveAddendum(txtType.Text, txtNumber.Text, txtLine1.Text, txtLine2.Text, txtLine3.Text, txtLine4.Text);

MessageBox.Show(sOut); 

关于c# - 将记录插入 sql db 后返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109605/

相关文章:

c# - 不使用 Log() 查找位位置

php - mysqli_query() 上的空白页;?

mysql - 在插入时使用 MySQL 检查两列的重复项,但两列都不是唯一的

c# - 'TProtocol' 不包含 'IncrementRecursionDepth' 的定义

c# - 在 SQLite 上将表达式结果从浮点转换为小数

c# - ASP.net MVC 发送邮件

c# - Finalizer 中未处理的异常不是来 self 们的代码

mysql - 如何在 mySQL 中合并多个查询结果中的列?

php - 在 file_get_contents() php 中插入 Javascript

arrays - Excel 公式填充数组