This section illustrates some key features of Adaptive Server ADO.NET Data Provider by walking through some of the code from the Advanced code sample. The Advanced project uses the Adaptive Server sample database, pubs2, which can be installed from your Adaptive Server CDs.
In this section, the code is described a few lines at a time. To see all of the code, open the sample project:
For C#:
<install dir>\Samples\CSharp\Advanced\Advanced.csproj
For Visual Basic .NET:
<install dir>\Samples\VB.NET\Advanced\Advanced.vbproj
The following lines of code attaches your trace event handlers to the AseConnection:
For C#:
_conn.TraceEnter += new TraceEnterEventHandler(TraceEnter); _conn.TraceExit += new TraceExitEventHandler(TraceExit);
For Visual Basic .NET:
AddHandler _conn.TraceEnter, AddressOf TraceEnter AddHandler _conn.TraceExit, AddressOf TraceExit
The method ExecuteCommandUsingNamedParams() invokes the stored procedure by name using named parameters.
For C#:
using(AseCommand cmd = new AseCommand("sp_hello", _conn)) { cmd.CommandType = CommandType.StoredProcedure; AseParameter inParam = new AseParameter("@inParam", AseDbType.VarChar, 32); inParam.Direction = ParameterDirection.Input; inParam.Value = textBoxInput.Text; cmd.Parameters.Add(inParam); AseParameter inoutParam = new AseParameter("@inoutParam", AseDbType.VarChar, 64); inoutParam.Direction = ParameterDirection.InputOutput; inoutParam.Value = textBoxInOut.Text; cmd.Parameters.Add(inoutParam); AseParameter outParam = new AseParameter("@outParam", AseDbType.VarChar, 64); outParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(outParam); AseParameter retValue = new AseParameter("@retValue", AseDbType.Integer); retValue.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(retValue); try { cmd.ExecuteNonQuery(); } catch (AseException ex) { MessageBox.Show(ex.Source + " : " + ex.Message + " (" + ex.ToString() + ")", "Execute Stored Precedure failed."); } }
For Visual Basic .NET:
Dim cmd As New AseCommand("sp_hello", _conn) ' set command type to stored procedure cmd.CommandType = CommandType.StoredProcedure ' create the input parameter object and bind it to the command Dim inParam As New AseParameter("@inParam", AseDbType.VarChar, 32) inParam.Direction = ParameterDirection.Input inParam.Value = textBoxInput.Text cmd.Parameters.Add(inParam) ' create the inout parameter object and bind it to the command Dim inoutParam As New AseParameter("@inoutParam", AseDbType.VarChar, 64) inoutParam.Direction = ParameterDirection.InputOutput inoutParam.Value = textBoxInOut.Text cmd.Parameters.Add(inoutParam) ' create the output parameter object and bind it to the command Dim outParam As New AseParameter("@outParam", AseDbType.VarChar, 64) outParam.Direction = ParameterDirection.Output cmd.Parameters.Add(outParam) ' create the return value object and bind it to the command Dim retValue As New AseParameter("@retValue", AseDbType.Integer) retValue.Direction = ParameterDirection.ReturnValue cmd.Parameters.Add(retValue) ' execute the stored procedure Try cmd.ExecuteNonQuery() Catch ex As AseException MessageBox.Show(ex.Source + " : " + ex.Message + " (" + ex.ToString() + ")", "Execute Query failed.") Finally ' dispose the command object cmd.Dispose() End Try
The method ExecuteCommandUsingParameterMarkers() invokes the stored procedure using the call syntax and using parameter markers.
For C#:
using(AseCommand cmd = new AseCommand("{ ? = call sp_hello(?, ?, ?)}", _conn)) { cmd.NamedParameters = false; AseParameter retValue = new AseParameter(0, AseDbType.Integer); retValue.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(retValue); AseParameter inParam = new AseParameter(1, AseDbType.VarChar, 32); inParam.Direction = ParameterDirection.Input; inParam.Value = textBoxInput.Text; cmd.Parameters.Add(inParam); AseParameter inoutParam = new AseParameter(2, AseDbType.VarChar, 64); inoutParam.Direction = ParameterDirection.InputOutput; inoutParam.Value = textBoxInOut.Text; cmd.Parameters.Add(inoutParam); AseParameter outParam = new AseParameter(3, AseDbType.VarChar, 64); outParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(outParam); try { cmd.ExecuteNonQuery(); } catch (AseException ex) { MessageBox.Show(ex.Source + " : " + ex.Message + " (" + ex.ToString() + ")", "Execute Stored Precedure failed."); } }
For Visual Basic .NET:
Dim cmd As New AseCommand("{ ? = call sp_hello(?, ?, ?)}", _conn) ' need to notify Named Parameters are not being used (which is the default) cmd.NamedParameters = False ' create the return value object and bind it to the command Dim retValue As New AseParameter(0, AseDbType.Integer) retValue.Direction = ParameterDirection.ReturnValue cmd.Parameters.Add(retValue) ' create the input parameter object and bind it to the command Dim inParam As New AseParameter(1, AseDbType.VarChar, 32) inParam.Direction = ParameterDirection.Input inParam.Value = textBoxInput.Text cmd.Parameters.Add(inParam) ' create the inout parameter object and bind it to the command Dim inoutParam As New AseParameter(2, AseDbType.VarChar, 64) inoutParam.Direction = ParameterDirection.InputOutput inoutParam.Value = textBoxInOut.Text cmd.Parameters.Add(inoutParam) ' create the output parameter object and bind it to the command Dim outParam As New AseParameter(3, AseDbType.VarChar, 64) outParam.Direction = ParameterDirection.Output cmd.Parameters.Add(outParam) ' execute the stored procedure Try cmd.ExecuteNonQuery() ' get the output, inout and return values and display them textBoxReturn.Text = cmd.Parameters(0).Value textBoxReturn.ForeColor = Color.Blue textBoxInOut.Text = cmd.Parameters(2).V textBoxOutput.Text = cmd.Parameters(3).Value textBoxOutput.ForeColor = Color.Blue Catch ex As AseException MessageBox.Show(ex.Source + " : " + ex.Message + " (" + ex.ToString() + ")",_ "Execute Query Failed") Finally ' dispose the command object cmd.Dispose() End Try