1

このコードはクラス(データベース)にあり、取得しています

すべてのパスが値を返すわけではありません。

どんな助けでも本当にありがたいです。

public static DataSet DELETE_PDT(String rowid)
{
    SqlConnection con = new SqlConnection();
    SqlCommand cmd = new SqlCommand("sp_DELETE_PDT", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@rowid", SqlDbType.Int).Value = rowid;

    con.ConnectionString = ConfigurationManager.ConnectionStrings["WMS"].ConnectionString;

    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        con.Close();
    }
    catch (Exception ex)
    {
        throw new Exception("Error while deleting record. Please contact your System Administrator", ex);
    }
}
4

4 に答える 4

0

return valueを返すように宣言しているため、メソッドにはaが必要ですDataset

例、

return new Dataset();

エラーメッセージを表示したくない場合は、変更してください

public static DataSet DELETE_PDT(String rowid)
{
   // statements
}

public static void DELETE_PDT(String rowid)
{
   // statements
}

更新1

あなたのコメントに基づいて、文字列値を再び返すように変更します。

public static string DELETE_PDT(String rowid)
{
    using (SqlConnection con = new SqlConnection())
    {
        con.ConnectionString = ConfigurationManager.ConnectionStrings["WMS"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand("sp_DELETE_PDT", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@rowid", SqlDbType.Int).Value = rowid;
            try
            {
                if (con.State == ConnectionState.Open)
                con.Close();
                con.Open();
                cmd.ExecuteNonQuery();
                return "Record has been deleted";
            }
            catch (Exception ex)
            {
                return "Error while deleting record. Please contact your System Administrator";
            }
        }
    }
}
于 2012-09-24T02:38:48.623 に答える
0

メソッドが...を返すように宣言しましたが、DataSet何も返しません。つまり...のインスタンスを返すDataSetか、メソッドのシグネチャを変更する必要があります。

于 2012-09-24T02:39:07.430 に答える
0

メソッドがを返す必要があることを宣言しましたが、DataSet何も返しません(これはメソッドが行うことに対して論理的です)。署名を次のように変更します。

public static void DELETE_PDT(String rowid)

補足:閉じられていない接続を残す例外が発生しないようにするには、を使用できますusing。これにより、コマンドと接続が何が起こっても常に破棄されます。

public static void DELETE_PDT(String rowid) {
  using (SqlConnection con = new SqlConnection()) {
    con.ConnectionString = ConfigurationManager.ConnectionStrings["WMS"].ConnectionString;
    using (SqlCommand cmd = new SqlCommand("sp_DELETE_PDT", con)) {
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add("@rowid", SqlDbType.Int).Value = rowid;
      try {
        con.Open();
        cmd.ExecuteNonQuery();
      } catch (Exception ex) {
        throw new Exception("Error while deleting record. Please contact your System Administrator", ex);
      }
    }
  }
}
于 2012-09-24T02:40:18.340 に答える
0

コードをリファクタリングしました。これを試して:

public static void DELETE_PDT(String rowid) {
    using(SqlConnection con = new SqlConnection()) {
        con.ConnectionString = ConfigurationManager.ConnectionStrings["WMS"].ConnectionString;
        using(SqlCommand cmd = new SqlCommand("sp_DELETE_PDT", con)) {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@rowid", SqlDbType.Int).Value = rowid;

            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("Error while deleting record. Please contact your System Administrator", ex);
            }
        }
    }
}
于 2012-09-24T02:42:17.690 に答える