SQL Server Central is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
Search:  
 
 

An introduction to using the ADO.NET - SqlCommand Object

By Jon Winer, 2001/12/11

Total article views: 17495 | Views in the last 30 days: 75
An introduction to using the ADO.NET - SqlCommand Object

Are you familiar with using the Command object in ADO? If so, migrating to ADO.NET shouldn't be as much of a headache as you might think. Here I discuss a couple of the methods available using ADO.NET's SqlDataReader and SqlCommand objects that map well to coding practices commonly utilized in ADO. 

The basics for ADO's Command object are essentially the learning blocks for ADO.NET.  Here is a rough outline of the steps used in creating and executing an ADO command object or an ADO.NET SqlCommand object:

1) You must create and open a connection

2) You must instantiate the command object

3) You must specify the command type

4) You must specify the command text

5) You must append parameters to the command object (if necessary)

6) You must execute the command

If you're not so familiar with the Command object of old, here is a piece of code to refresh your mind.  The example below depicts a Command object executing a stored procedure which takes a single parameter.


ADO Command object  - VB 6 example

' Set the CommandText as a parameterized SQL query.
objCmd.CommandText = "sp_GetCustomerOrders"
objCmd.CommandType = adCmdStoredProc

' Create new parameter for CustomerID. Initial value is ABCDE.
Set objParm1 = objCmd.CreateParameter("CustId", adChar, _
adParamInput, 5, "ABCDE")
objCmd.Parameters.Append objParm1

' Connect to the data source.
Set objConn = GetNewConnection
objCmd.ActiveConnection = objConn

' Execute
Set objRs = objCmd.Execute

' Process data and clean up

Of course, there are several ways to use the Command object, but the above example is one that is widely familiar. So lets address some of the similarities between the ADO Command object and ADO.NET.  Just as you append parameters to the ADO Command object, so too must you do this in ADO.NET. The syntax is a bit different, but the idea is the same. Here is a sample:

ADO.NET/C# - Adding parameters to the SqlCommand object

//Create a SqlDataReader - a read only, forward only cursor
SqlDataReader DR;

//Create the SqlCommand
SqlCommand cmd = new SqlCommand(spName,GetConnection());
//Set the Command Type
cmd.CommandType = CommandType.StoredProcedure;

//parameters are the stored procedure parameter name(s) and the value(s)
SqlParameter parm1 = new SqlParameter("@nCustID",nCustID);
cmd.Parameters.Add(parm1);

//Open the connection
cmd.Connection.Open();

//Execute the command and close the connection
DR = cmd.ExecuteReader(CommandBehavior.CloseConnection);

//Process data and clean up

As you can see, the methods are not too different. And as the above code example shows, you have a higher level of control over when certain events should occur - i.e. (When the connection is actually opened).

Another common task in ADO programming is creating an output parameter.  In ADO, you must specify the direction of the parameter.  In ADO.NET it is very much the same.  Take a look at the code below:

 ADO.NET/C# - Creating an output parameter

//Create a SqlDataReader - a read only, forward only cursor
SqlDataReader DR;

> //Create the SqlCommand
SqlCommand cmd = new SqlCommand(spName,GetConnection());

//Set the Command Type
cmd.CommandType = CommandType.StoredProcedure;

//Create the output parameter
SqlParameter parm1 = new SqlParameter("RETURN_VALUE", SqlDbType.Int, 4);
//Specify the parameter's direction
parm1.Direction = ParameterDirection.ReturnValue;

//Add the parameter
cmd.Parameters.Add(parm1);

> //Create second parameter
> SqlParameter parm2 = new SqlParameter("@nCustID", SqlDbType.Int, 4);

> //Add the parameter
cmd.Parameters.Add(parm2);

> //Open the connection
cmd.Connection.Open();

> //Execute the command
> DR = cmd.ExecuteReader();

//Get return value from output parameter
string sReturnValue = parm1.Value.ToString();

> //Process data and clean up

One thing to keep in mind, in .NET, a SqlDataReader uses a read only, forward only cursor. If you desire more functionality with the cursor type, a DataSet might be the next best option. Another important tidbit, you may only have one open SqlDataReader at a time per a single connection.  Keep this in mind during the design of your application. 

I hope these code samples will help as an introductory to moving forward in adopting ADO.NET.  Please look for my next article.  I'll be looking at some additional new features in ADO.NET.

By Jon Winer, 2001/12/11

Total article views: 17495 | Views in the last 30 days: 75
Your response
 
 
Related tags

.Net     Programming    
News     SQL Server 7, 2000    
 
Already registered?  

Free registration required

To read the rest of this article, and access thousands of other articles, we ask you to register on the site and subscribe to our newsletters.

Register

E-mail address:
Password:
Password (confirm):

  

Subscriptions

We ask you to register on the site and subscribe to our newsletters. Subscribing to our newsletters gets you:

  • ALL of our content (thousands of articles, scripts, and forum postings)
  • A daily newsletter (example)
  • A weekly news round up (example)
  • The opportunity to ask and answer questions in our forums
  • A daily Question of the Day to test and help you increase your knowledge of SQL Server.

We ask that you give the newsletter a try for a week. Over 200,000 SQL Server Professionals a day find it entertaining and useful. If not, you are welcome to unsubscribe at anytime.

Steve Jones
Editor, SQLServerCentral.com