(B) How Do We Use Stored Procedure in and How Do We Provide Parameters To The Stored Procedures?
(B) How Do We Use Stored Procedure in and How Do We Provide Parameters To The Stored Procedures?
cate=5
http://www.codeproject.com/KB/aspnet/Adonetpart2.aspx
http://dng-ado.blogspot.com/
http://www.c-sharpcorner.com/UploadFile/mahesh/WorkingWithArrays11232005064036AM/WorkingWithArrays.aspx
http://www.codeproject.com/KB/WCF/WCFOverview.aspx
http://www.c-sharpcorner.com/UploadFile/jayendra/5065/
http://www.itrust.in/content/tax-planning/How-Can-I-Save-Taxes-This-Year-India
(B) How do we use stored procedure in ADO.NET and how do we provide parameters
to the stored procedures?
ADO.NET provides the SqlCommand object, which provides the functionality of executing stored
procedures.
Note :- Sample code is provided in folder “WindowsSqlClientCommand”. There are two stored
procedures created in same database “Employees” which was created for the previous
question.
In the above sample, not much has been changed only that the SQL is moved to the stored
procedures. There are two stored procedures one is “Select Employee” which selects all the
employees and the other is “SelectByEmployee” which returns employee name starting with a
specific character. As you can see to provide parameters to the stored procedures, we are using
the parameter object of the command object. In such question interviewer expects two simple
answers one is that we use command object to execute stored procedures and the parameter
object to provide parameter to the stored procedure. Above sample is provided only for getting
the actual feel of it. Be short be nice and get a job.
(B) How can we force the connection object to close after my data reader is closed?
Command method Execute reader takes a parameter called as Command Behavior where in we
can specify saying close connection automatically after the Data reader is close.
(B) I want to force the data reader to return only schema of the data store rather than
data.
(B) How can we fine-tune the command object when we are expecting a single row?
Again, CommandBehaviour enumeration provides two values Single Result and Single Row. If
you are expecting a single value then pass “CommandBehaviour.SingleResult” and the query is
optimized accordingly, if you are expecting single row then pass
“CommandBehaviour.SingleRow” and query is optimized according to single row.
(B) Which is the best place to store connection string in .NET projects?
Config files are the best places to store connection strings. If it is a web-based application
“Web.config” file will be used and if it is a windows application “App.config” files will be used.
In such type of questions interviewer is looking from practical angle, that have you worked
with dataset and datadapters. Let me try to explain the above code first and then we move to
what steps should be told during interview.
First step is to open the connection. Again, note the connection string is loaded from config file.
Second step is to create a command object with appropriate SQL and set the connection object
to this command.
Third steps is to create the Adapter object and pass the command object to the adapter object.
objDataAdapter.Fill(objDataSet)
Fourth step is to load the dataset using the “Fill” method of the data adapter.
lstData.DataSource = objDataSet.Tables(0).DefaultView
lstData.DisplayMember = “FirstName”
lstData.ValueMember = “FirstName”
Fifth step is to bind to the loaded dataset with the GUI. At this moment sample has list box as
the UI. Binding of the UI is done by using Default View of the dataset. Just to revise every
dataset has tables and every table has views. In this sample, we have only loaded one table i.e.
Employees table so we are referring that with an index of zero.
Just say all the five steps during interview and you will see the smile on the interviewer’s face
and appointment letter in your hand.
(B)What are the various methods provided by the dataset object to generate XML?
Note:- XML is one of the most important leap between classic ADO and ADO.NET. So this
question is normally asked more generally how can we convert any data to XML format. Best
answer is convert in to dataset and use the below methods.
• ReadXML
Read’s a XML document in to Dataset.
• GetXML
This is a function, which returns the string containing XML document.
• Writexml
This writes a XML data to disk.
(B) How can we save all data from dataset?
Dataset has “Accept Changes” method, which commits all the changes since last time “Accept
changes” has been executed.
Note :- This book does not have any sample of Acceptchanges. We leave that to readers as
homework sample. But yes from interview aspect that will be enough.
(B) How can we check that some changes have been made to dataset since it was
loaded?
For tracking down changes, Dataset has two methods, which comes as rescue “Get Changes
“and “Has Changes”.
Get Changes
Returns dataset, which are changed since it, was loaded, or since Accept changes was
executed.
Has Changes
Or abandon all changes since the dataset was loaded use “Reject Changes This property
indicates that has any changes been made since the dataset was loaded or accept changes
method was executed.
Note:- One of the most misunderstood things about these properties is that it tracks the
changes of actual database. That is a fundamental mistake; actually the changes are related to
only changes with dataset and have nothing to with changes happening in actual database. As
dataset are disconnected and do not know anything about the changes happening in actual
database.
“Data table” provides “NewRow” method to add new row to “Data Table”. “Data Table” has
“DataRowCollection” object that has all rows in a “Data Table” object. Following are the
methods provided by “DataRowCollection” object:-
Add
“Data View” represents a complete table or can be small section of rows depending on some
criteria. It is best used for sorting and finding data with in “data table”.
Data view has the following methods:-
Find
This also takes array of values but returns a collection of “Data Row”.
If we want to manipulate data of “Data Table” object create “Data View” (Using the “Default
View” we can create “Data View” object) of the “Data Table” object and use the following
functionalities:-
Add New
Twist: - Why is Dataset slower than Data Reader is?Fourth point is the answer to the twist.
Note:- This is my best question and we expect everyone to answer it. It is asked almost 99% in
all companies....Basic very Basic cram it.
Following are the major differences between “Dataset” and “Data Reader”:-
• “Dataset” is a disconnected architecture, while “Data Reader” has live connection while
reading data. If we want to cache data and pass to a different tier “Dataset” forms the best
choice and it has decent XML support.
• When application needs to access data from more than one table “Dataset” forms the best
choice.
• If we need to move back while reading records, “data reader” does not support this
functionality.
• However, one of the biggest drawbacks of Dataset is speed. As “Dataset” carry considerable
overhead because of relations, multiple table’s etc speed is slower than “Data Reader”. Always
try to use “Data Reader” wherever possible, as it is meant especially for speed performance.
lstdata.DataSource = objDataSet.Tables("Table1").DefaultView
In order to refer “Table1” Data Table, use Tables collection of Datasets and the Default view
object will give you the necessary output.
Command Builder builds “Parameter” objects automatically. Below is a simple code, which uses
command builder to load its parameter objects.
In pessimistic locking when user wants to update data it locks the record and till then no one
can update data. Other user’s can only view the data when there is pessimistic locking.
In optimistic locking multiple users can open the same record for updating, thus increase
maximum concurrency. Record is only locked when updating the record. This is the most
preferred way of locking practically. Now a days in browser based application it is very
common and having pessimistic locking is not a practical solution.
• Check for original values stored in SQL SERVER and actual changed values. In stored
procedure check before updating that the old data is same as the current Example in the below
shown SQL before updating field1 we check that is the old field1 value same. If not then some
one else has updated and necessary action has to be taken.
The most common sequence of steps that would be performed while developing a transactional
application is as follows:
• Open a database connection using the Open method of the connection object.
• Begin a transaction using the Begin Transaction method of the connection object. This
method provides us with a transaction object that we will use later to commit or rollback the
transaction. Note that changes caused by any queries executed before calling the Begin
Transaction method will be committed to the database immediately after they execute. Set the
Transaction property of the command object to the above mentioned transaction object.
• Execute the SQL commands using the command object. We may use oneormorecommand
objects for this purpose, as long as the Transaction property of all the objects is set to a valid
transaction object.
• Commit or roll back the transaction using the Commit or Rollback method of the transaction
object.
• Close the database connection.
(A) Can you explain the difference between an ADO.NET Dataset and an ADO Record
set?
There two main basic differences between record set and dataset:-
• With dataset you an retrieve data from two databases like oracle and sql server and merge
them in one dataset , with record set this is not possible
• All representation of Dataset is using XML while record set uses COM.
• Record set cannot be transmitted on HTTP while Dataset can be.
When a connection is opened first time, a connection pool is created and is based on the exact
match of the connection string given to create the connection object. Connection pooling only
works if the connection string is the same. If the connection string is different, then a new
connection will be opened, and connection pooling will not be used.
Let us try to explain the same pictorially. In the above figure, you can see there are three
requests “Request1”, “Request2”, and “Request3”. “Request1” and “Request3” have same
connection string so no new connection object is created for “Request3” as the connection
string is same. They share the same object “ConObject1”. However, new object “ConObject2”
is created for “Request2” as the connection string is different.
Note: - The difference between the connection string is that one has “User id=sa” and other
has “User id=Testing”.
Maximum pool size decides the maximum number of connection objects to be pooled. If the
maximum pool size is reached and there is no usable connection available the request is
queued until connections are released back in to pool. So it’s always a good habit to call the
close or dispose method of the connection as soon as you have finished work with the
connection object.
For .NET it is enabled by default but if you want to just make sure set Pooling=true in the
connection string. To disable connection pooling set Pooling=false in connection string if it is
an ADO.NET Connection. If it is an OLEDBConnection object set OLE DB Services=-4 in the
connection string.