0

パラメータ名、その値、およびストアド プロシージャ名のリストを取得する更新メソッドを作成するデータ コンジット クラスがあります。実行時に、SQL db の特定の行を更新したいと考えています。

データ コンジット クラスのこれまでのコードは次のとおりです。

public class clsDataConduit
{
    SqlConnection Conn= new SqlConnection();
    SqlDataReader rdr= null;
    SqlDataAdapter dataChannel = new SqlDataAdapter();
    SqlCommandBuilder commandBuilder = new SqlCommandBuilder();
    SqlCommand cmd = null;
    List<SqlParameter> SQLParams = new List<SqlParameter>();
    DataTable queryResults = new DataTable();
    DataRow newRecord;


        public void NewRecord(string SProcName)
        {
           //works fine
        }


        public void UpdateRecord(string SProcName)
        {

        Conn= new SqlConnection(connectionString);
        //open the database
        Conn.Open();
        //initialise the command builder for this connection
        SqlCommand dataCommand = new SqlCommand(SProcName, Conn);
        //add the parameters to the command builder
        //loop through each parameter
        for (int Counter = 0; Counter < SQLParams.Count; Counter += 1)
        {
            //add it to the command builder
            dataCommand.Parameters.Add(SQLParams[Counter]);
        }
        dataCommand.CommandType = CommandType.StoredProcedure;
        dataChannel = new SqlDataAdapter(SProcName, Conn);

        dataChannel.UpdateCommand = dataCommand;
        commandBuilder = new SqlCommandBuilder(dataChannel);

        dataChannel.Update(queryResults);

        ///////////////////////////////////////////////////////////
        // Method runs fine till above code, BUT I am not too sure 
        // how to write the rest of the code so that It updates a 
        // a particular row in sql
        ///////////////////////////////////////////////////////////
        //get the structure of a single record
        //newRecord = queryResults.NewRow();   //from previous method - new data


        Conn.Close();
        }
}

この時点からさらに先に進むにはどうすればよいかわかりません。誰かが私を助けることができればお願いします。

ありがとう

4

1 に答える 1

0

私があなたのコードを正しく理解していれば、あなたはすでに適切なパラメーター(値がすでに設定されている)をコマンドに入力しているので、呼び出すだけで済みます

dataCommand.ExecuteNonQuery();

必要なのはこれだけです(もちろん、SQLParamsリストにはパラメーターとその値が既に入力されている必要があります)。また、より一般的には、UpdateRecordに渡すことができます。これは、呼び出されたストアドプロシージャに使用するSqlParameterのリストです。

public void UpdateRecord(string SProcName, List<SqlParameters> prms)
{
    using(Conn= new SqlConnection(connectionString))
    {
        //open the database
        Conn.Open();
        //initialise the command builder for this connection
        SqlCommand dataCommand = new SqlCommand(SProcName, Conn);
        //add the parameters to the SqlCommand
        dataCommand.Parameters.AddRange(prms.ToArray());
        dataCommand.CommandType = CommandType.StoredProcedure;
        dataCommand.ExecuteNonQuery();
    }
}
于 2013-01-06T16:18:31.143 に答える