测试C#方法,涉及SQL

本文关键字:涉及 SQL 方法 测试 | 更新日期: 2023-09-27 18:34:37

我这里有一个为家庭作业创建的方法。我相信它有效,我想测试它是否有效。所以这是方法:

public static bool UpdatePerson (Personnel person, out string result)
    {
        result = "update not successful";
        bool flag = false;
        System.Data.SqlClient.SqlCommand updatePerson = new System.Data.SqlClient.SqlCommand();
        updatePerson.Connection = Data.con;
        //updatePerson.CommandType = CommandType.StoredProcedure;
        SqlParameter p1 = new SqlParameter("perFirstName", person.First);
        SqlParameter p2 = new SqlParameter("perMiddleName", person.Middle);
        SqlParameter p3 = new SqlParameter("perLastName", person.Last);
        SqlParameter p4 = new SqlParameter("ID", person.PersonnelID);
        updatePerson.Parameters.Add(p1);
        updatePerson.Parameters.Add(p2);
        updatePerson.Parameters.Add(p3);
        updatePerson.Parameters.Add(p4);
        updatePerson.CommandText = "Update tblPersonnel Set perFirstName = " + p1 + " perMiddleName = " + p2 + " perLastName = " + p3 + "Where ID = " + p4;
        try
        {
            Data.con.Open();
            updatePerson.ExecuteNonQuery();
            result = "Update Successful";
            flag = true;

        }
        catch (Exception ex)
        {
            result = ex.Message;
        }
        finally
        {
            if (Data.con.State == System.Data.ConnectionState.Open)
                Data.con.Close();
        }
        return flag;
    }

现在这是测试编码:

using MovieLibrary;
namespace Test
{
public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string result = " ";

        MovieLibrary.Personnel update = MovieLibrary.Personnel.UpdatePerson(MovieLibrary.Personnel, out result);
        if (update != null)
            this.Label1.Text = result;
    }
}

唯一给我带来问题的是在参数中插入数据。这给了我一个错误,说MovieLibrary.Personnel是一种类型,不属于那里。

测试C#方法,涉及SQL

你需要传递一个 Personnel 的实例。目前,您正在使用类型的名称作为参数。这是你做不到的。您的方法返回bool ..不是Personnel对象。

希望这使它更加清晰。这就是你所拥有的,这是错误的:

MovieLibrary.Personnel update = 
       MovieLibrary.Personnel.UpdatePerson(MovieLibrary.Personnel, out result);
//                                         ^^^^^^^^^^^^^^^^^^^^^^ Wrong

但是,这是您需要的:

Personnel p = new Personnel();
// set properties here
 // it returns bool
 bool updated = 
       MovieLibrary.Personnel.UpdatePerson(p, out result);
//                                        ^^ Right.. an instance

此外,您返回的是 bool ,但结果也有一个out参数。考虑让它返回结果(或根据布尔返回值决定做什么......或者可能让异常从方法中抛出(。