0

ここに、宿題用に作成したメソッドがあります。私はそれが機能すると信じており、機能するようにテストしたいと考えています。だからここに方法があります:

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 はタイプであり、そこに属していないというエラーが表示されます。

4

1 に答える 1

3

のインスタンスを渡す必要があります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結果を返すようにすることを検討してください(またはブール値の戻り値に基づいて何をすべきかを決定する..または、メソッドから例外がスローされる可能性があります)。

于 2013-10-10T02:32:18.460 に答える