0

winform で .net 4.0 c# を使用しています。次に、ストアド プロシージャを使用して、データベースに新しい行を挿入します。明らかに、asp.net と Windows フォームの間のバインド手順に混乱しています。asp.net では非常に単純ですが、winform ではBindingSourceオブジェクトを使用する必要があるようです???

つまり、winform では別の方法を使用する必要があります。次のコードは、新しいレコードとバインドを挿入するために asp.net で使用していたものです。データソースをデータグリッドビューにバインドするように書き換える方法。

public void ExecuteNonQuery(string storedProcedure, Dictionary<string, object> parameters)
    {
        using (SqlConnection conn = new SqlConnection(_connectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(storedProcedure, conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                if (parameters != null)
                {
                    foreach (string parameter in parameters.Keys)
                    {
                        cmd.Parameters.AddWithValue(parameter, parameters[parameter] ?? DBNull.Value);
                    }
                }
                cmd.ExecuteNonQuery();
            }
            conn.Close();
        }
    }

パラメータを設定したら、次のように呼び出します。

        DBAccess dbaccess = new DBAccess(connString);
        dbaccess.ExecuteNonQuery("InsertStoredProcedure", parameters);

データベースをデータグリッドビューにバインドする方法がわかりません。ありがとう。

4

1 に答える 1

0

データベースに行を挿入した場合は、データベースから行を再度フェッチする必要があります。別のストアド プロシージャを使用する (SELECT クエリを使用)。

ExecuteNonQuery を使用しています。つまり、データベースから何もクエリしていません。そのため、グリッドの形で結果が得られることはありません。ただし、影響を受ける行の数を含む整数を返すだけです。

したがって、私の提案は、行を挿入した後、別のクエリを作成して cmd.ExecuteReader() で行をフェッチし、SqlReader オブジェクトをグリッドにバインドすることです。

問題が解決することを願っています。

于 2012-05-04T20:55:27.283 に答える