1
interface IDbInteraction
{
    int GetValueAsInt(string sql);
}

class SQLDbInteraction : IDbInteraction
{
    private string _connStr;

    public SQLDbInteraction (string connStr)
    {
         _connStr = connStr;
    }

    public int GetValueAsInt(string sql)
    {
        int value;

            using(SqlConnection conn=new SqlConnection(_connStr))
            {
                SqlCommand command = new SqlCommand(sql, conn);
                conn.Open();
                value = Convert.ToInt32(command.ExecuteScalar());

            }


        return value;
    }
}

interfaceこれは、SQL Server データベースへのアクセスが必要な場合のプログラミング方法の簡単な例です。

質問で提示した古いコードを置き換えるためのアドバイスとして提供されました。

だから...、私は新しい開発者であり、interface概念/アプローチ/方法論に慣れていないので、用語に実際に接続Repositoryしていないので、名前を変更しました...

class これら 2 つ : & interfaceaboveをどのように使用するかについて、少し大まかな例を挙げていただけますか?

IRepositoryまた、 (元の名前) の代わりになるものを教えてください。

(差し支えなければ)何に置き換えますか?

この投稿のポイントは、私が使用していた危険でちょっとしたテクニックから移行することであり、現在は「次世代」のコーディング方法論obsoleteに移行しようとしていますが、

このサンプル コードであなたの助けを借りて、使い方を学ぶことができます。

アップデート

私が今やったことはウェブを研究することでした..それでも、私はこの問題に疑問を持っています:

呼び出す/呼び出す方法です GetValueAsInt("select aColumn ...")

今... interface「式」に追加すると、

呼び出し行為が気にする限り、それは何かを変えましたか?

今までと同じように電話GetValueAsInt()をかけますか?

このように、実際には何も変わっていないというのは本当ですか..実際の使用法については

今電話しますか

IDbInteraction.GetValueAsInt("select aColumn from...")

また

SQLDbInteraction.GetValueAsInt("select aColumn from...")

または両方の方法で呼び出すことができるようになりましたか?

4

2 に答える 2

1

答えを期待していたのでわかりました...まだ検索している間に結論に達しました

これは私が実装しようとしているものです

(アプリケーションの対象が色であるとします)

IDbInteraction colorsData = new SQLDbInteraction("server=(local);Initial Catalog=...");
int colorId= colorsData.GetValueAsInt("SELECT colorId FROM colors WHERE name='jade'"));

私は正しい答えを求めてこの検索を続けます.私の実装に何か問題がある場合は、あなたの答えを投稿してください.

于 2012-12-08T23:13:39.983 に答える
1

インターフェイスベースのプログラミングは、基本的に、使用時にクラスが従わなければならないコントラクトを定義するために使用されます。この種の用語は初めてなので、オブジェクト指向プログラミングとデザインパターンを読んで、実装について調べてください。リポジトリ パターン.. IRepository は、インターフェイスに好きな名前を付けることができる単なるインターフェイス名です。リポジトリは、ビジネス ロジックからデータ アクセス レイヤーまで非常に一般的に使用されるデザイン パターンです。このコードを安全でなく時代遅れと定義するかどうかはわかりませんが、設計パターンとオブジェクト指向の手法を使用してこのロジックを実装することを決定するかもしれません。

于 2012-12-08T19:45:26.023 に答える