Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations MikeeOK on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

SqlParameter value setting for ado.net 2.0 update command

Status
Not open for further replies.

alexjones

Programmer
Jul 27, 2001
132
US
I am attempting to update a SQL Server table from a table in a disconnected dataset using an update command.
The stored procedure looks like:

Code:
CREATE PROCEDURE UpdateProduct
                   @OldCode nvarchar (20),
                   @NewCode nvarchar (20),
                   @OfferID int
AS

UPDATE Product
   SET Code = @NewCode
 WHERE Code = @OldCode AND OfferID = @OfferID

The disconnected dataTable has two columns: Code and OfferID.

The update command definition looks like:

Code:
SqlParameter parm;

SqlCommand cmd = new SqlCommand("UpdateProduct", cn);
cmd.CommandType = CommandType.StoredProcedure;

parm = new SqlParameter("@NewCode", SqlDbType.Nvarchar, 20);
parm.SourceColumn = "Code";
parm.SourceVersion = DataRowVersion.Current;
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);

parm = new SqlParameter("@OldCode", SqlDbType.Nvarchar, 20);
parm.SourceColumn = "Code";
parm.SourceVersion = DataRowVersion.Original;
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);

parm = new SqlParameter("@OfferID", SqlDbType.Nvarchar, 20);
parm.SourceColumn = "OfferID";
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);

I have been accessing my changed rows using, for example:
Code:
DataRows[] rows = dataset.table.select("","",DataRowViewState.ModifiedCurrent);
foreach(DataRow row in rows)
{
   cmd.Parameters[0].Value = row.ItemArray[0].ToString();
   cmd.Parameters[1].Value = ???????
   cmd.Parameters[2].Value = Convert.ToInt32(row.ItemArray[1]);
   cmd.ExecuteNonQuery();
}

My problem is, I don't know how to access the rows so I can set the value of cmd.Parameters[1] with the original value of Code.

I'd be most grateful for any help anyone can give me.

 
I have blundered into the answer to my own question.
I can replace:
Code:
DataRows[] rows = dataset.table.select("","",DataRowViewState.ModifiedCurrent);
foreach(DataRow row in rows)
{
   cmd.Parameters[0].Value = row.ItemArray[0].ToString();
   cmd.Parameters[1].Value = ???????
   cmd.Parameters[2].Value = Convert.ToInt32(row.ItemArray[1]);
   cmd.ExecuteNonQuery();
}

with
Code:
DataRows[] rows = dataset.table.select("","",DataRowViewState.ModifiedCurrent);
foreach(DataRow row in rows)
{
   cmd.Parameters[0].Value = row["Code",DataRowVersion.Current].ToString();
   cmd.Parameters[1].Value = row["Code",DataRowVersion.Original].ToString();
   cmd.Parameters[2].Value = Convert.ToInt32(row["OfferID"]);
   cmd.ExecuteNonQuery();
}
Hope this helps others who might be floundering around in the wonderful world of ADO.NET 2.0
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top