Thursday, September 18, 2008

Finding which button clicked

If you want to know which button is being click befor the button click event there is a function which you will have to override.

override protected void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
    {
        string s = ((WebControl)sourceControl).ID;
        Response.Write(s.ToString());
       
    }

This event is fired after page lod and before button click event.
Using this event one can find that due to which control post back occured.

Tuesday, July 1, 2008

Class Question

  1. What is the syntax to inherit from a class in C#?
    Place a colon and then the name of the base class.
    Example: class MyNewClass : MyBaseClass
  2. Can you prevent your class from being inherited by another class?
    Yes. The keyword “sealed” will prevent the class from being inherited.
  3. Can you allow a class to be inherited, but prevent the method from being over-ridden?
    Yes. Just leave the class public and make the method sealed.
  4. What’s an abstract class?
    A class that cannot be instantiated. An abstract class is a class that must be inherited and have the methods overridden. An abstract class is essentially a blueprint for a class without any implementation.
  5. When do you absolutely have to declare a class as abstract?
    1. When the class itself is inherited from an abstract class, but not all base abstract methods have been overridden.
    2.
    When at least one of the methods in the class is abstract.
  6. What is an interface class?
    Interfaces, like classes, define a set of properties, methods, and events. But unlike classes, interfaces do not provide implementation. They are implemented by classes, and defined as separate entities from classes.
  7. Why can’t you specify the accessibility modifier for methods inside the interface?
    They all must be public, and are therefore public by default.
  8. Can you inherit multiple interfaces?
    Yes. .NET does support multiple interfaces.
  9. What happens if you inherit multiple interfaces and they have conflicting method names?
    It’s up to you to implement the method inside your own class, so implementation is left entirely up to you. This might cause a problem on a higher-level scale if similarly named methods from different interfaces expect different data, but as far as compiler cares you’re okay.
    To Do: Investigate
  10. What’s the difference between an interface and abstract class?
    In an interface class, all methods are abstract - there is no implementation. In an abstract class some methods can be concrete. In an interface class, no accessibility modifiers are allowed. An abstract class may have accessibility modifiers.
  11. What is the difference between a Struct and a Class?
    Structs are value-type variables and are thus saved on the stack, additional overhead but faster retrieval. Another difference is that structs cannot inherit.

C# Basic

  1. Does C# support multiple-inheritance?
    No.
  2. Who is a protected class-level variable available to?
    It is available to any sub-class (a class inheriting this class).
  3. Are private class-level variables inherited?
    Yes, but they are not accessible. Although they are not visible or accessible via the class interface, they are inherited.
  4. Describe the accessibility modifier “protected internal”.
    It is available to classes that are within the same assembly and derived from the specified base class.
  5. What’s the top .NET class that everything is derived from?
    System.Object.
  6. What does the term immutable mean?
    The data value may not be changed. Note: The variable value may be changed, but the original immutable data value was discarded and a new data value was created in memory.

  7. What’s the difference between System.String and System.Text.StringBuilder classes?
    System.String is immutable. System.StringBuilder was designed with the purpose of having a mutable string where a variety of operations can be performed.
  8. What’s the advantage of using System.Text.StringBuilder over System.String?
    StringBuilder is more efficient in cases where there is a large amount of string manipulation. Strings are immutable, so each time a string is changed, a new instance in memory is created.
  9. Can you store multiple data types in System.Array?
    No.
  10. What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?
    The Clone() method returns a new array (a shallow copy) object containing all the elements in the original array. The CopyTo() method copies the elements into another existing array. Both perform a shallow copy. A shallow copy means the contents (each array element) contains references to the same object as the elements in the original array. A deep copy (which neither of these methods performs) would create a new instance of each element's object, resulting in a different, yet identacle object.
  11. How can you sort the elements of the array in descending order?
    By calling Sort() and then Reverse() methods.
  12. What’s the .NET collection class that allows an element to be accessed using a unique key?
    HashTable.
  13. What class is underneath the SortedList class?
    A sorted HashTable.
  14. Will the finally block get executed if an exception has not occurred?­
    Yes.
  15. What’s the C# syntax to catch any possible exception?
    A catch block that catches the exception of type System.Exception. You can also omit the parameter data type in this case and just write catch {}.
  16. Can multiple catch blocks be executed for a single try statement?
    No. Once the proper catch block processed, control is transferred to the finally block (if there are any).
  17. Explain the three services model commonly know as a three-tier application.
    Presentation (UI), Business (logic and underlying code) and Data (from storage or other sources).

Tuesday, April 29, 2008

Recursive Function SQL Server

Simple Recursive Function finding the factorial: -

create FUNCTION Factorial(@x int ) RETURNS INT
AS
BEGIN
DECLARE @i int
IF @x <= 1 SET @i = 1
ELSE
SET @i = @x * dbo.Factorial( @x - 1 )
RETURN (@i)
END

Calling the function

select dbo.factorial(4)
ans: 24

Complex Recursive function

The Problem Suppose you have an employee called John and John directly reports Nancy. Nancy directly reports to Peter and Peter directly reports to Diana. The table you have set up to model this relationship has two fields for simplicity EmployeeID varchar(50), ManagerID varchar(50). In your table are the following entries


EmployeeID ManagerID

Diana
Peter Diana
Nancy Peter
John Nancy


Now John is a very insecure person and knows he is way down on the food chain. He requests a report from you that gives him a synopsis of where he stands in the food chain of the company to figure out how far he needs to climb. You think about it for a minute and come up with this recursive function that given a person's employee id will provide a list of all his direct and indirect supervisors ordered by rank. The function looks as follows

CREATE FUNCTION ReportsTo (@EmployeeID varchar(50), @depth int)
RETURNS @retFindReports TABLE (EmployeeID varchar(50) primary key, depth int) AS BEGIN
DECLARE @ManagerID varchar(50)
DECLARE @nextDepth int
SET @nextDepth = @depth + 1
SET @ManagerID = (SELECT ManagerID FROM Employees WHERE EmployeeID = @EmployeeID)

IF @ManagerID IS NOT NULL and @ManagerID > '' and @depth <= 5 and @ManagerID <> @EmployeeID
/***We stop if a person is their own manager or a person has no manager or We've exceeded a depth of 5 (to prevent potential infinite recursion ***/
INSERT INTO @retFindReports(EmployeeID, depth)
SELECT EmployeeID , @depth As Depth FROM Employees M Where M.EmployeeID =@ManagerID
UNION
--Recurseively call the function to append on the manager of a person's manager until no more
SELECT EmployeeID, Depth FROM ReportsTo(@managerID, @nextDepth)
RETURN
END

To figure out who John's supervisors are in order of rank you perform the following select statement

SELECT * From reportsTo('John',0) order by depth DESC

This returns

Diana 2
Peter 1
Nancy 0

Friday, April 18, 2008

Other Definition Sql Server

What is the difference between clustered and a non-clustered index?

A clustered index is a special type of index that reorders the way records in the table are physically stored. Therefore table can have only one clustered index. The leaf nodes of a clustered index contain the data pages.

A nonclustered index is a special type of index in which the logical order of the index does not match the physical stored order of the rows on disk. The leaf node of a nonclustered index does not consist of the data pages. Instead, the leaf nodes contain index rows.

What is cursors?

Cursor is a database object used by applications to manipulate data in a set on a row-by-row basis, instead of the typical SQL commands that operate on all the rows in the set at one time.
In order to work with a cursor we need to perform some steps in the following order:

1. Declare cursor
2. Open cursor
3. Fetch row from the cursor
4. Process fetched row
5. Close cursor
6. Deallocate cursor

What’s the difference between a primary key and a unique key?

Both primary key and unique enforce uniqueness of the column on which they are defined.
But by default primary key creates a clustered index on the column, where are unique creates a nonclustered index by default.
Another major difference is that, primary key doesn’t allow NULLs, but unique key allows one NULL only.

What is difference between DELETE & TRUNCATE commands?

Delete command removes the rows from a table based on the condition that we provide with a WHERE clause.
Truncate will actually remove all the rows from a table and there will be no data in the table after we run the truncate command.

TRUNCATETRUNCATE is faster and uses fewer system and transaction log resources than DELETE.
TRUNCATE removes the data by deallocating the data pages used to store the table’s data, and only the page deallocations are recorded in the transaction log.
TRUNCATE removes all rows from a table, but the table structure and its columns, constraints, indexes and so on remain.
The counter used by an identity for new rows is reset to the seed for the column.
You cannot use TRUNCATE TABLE on a table referenced by a FOREIGN KEY constraint.
Because TRUNCATE TABLE is not logged, it cannot activate a trigger.TRUNCATE can not be Rolled back using logs.
TRUNCATE is DDL Command.TRUNCATE Resets identity of the table.
DELETEDELETE removes rows one at a time and records an entry in the transaction log for each deleted row.
If you want to retain the identity counter, use DELETE instead.
If you want to remove table definition and its data, use the DROP TABLE statement.DELETE Can be used with or without a WHERE clauseDELETE Activates Triggers.
DELETE Can be Rolled back using logs.DELETE is DML Command.
DELETE does not reset identity of the table.

Difference between Function and Stored Procedure?

UDF can be used in the SQL statements anywhere in the WHERE/HAVING/SELECT section where as Stored procedures cannot be.
UDFs that return tables can be treated as another rowset.
This can be used in JOINs with other tables.Inline UDF’s can be though of as views that take parameters and can be used in JOINs and other Rowset operations.

Basic Definitions Sql Server

What is RDBMS?

Relational Data Base Management Systems (RDBMS) are database management systems that maintain data records and indices in tables.
Relationships may be created and maintained across and among the data and tables. In a relational database, relationships between data items are expressed by means of tables. Interdependencies among these tables are expressed by data values rather than by pointers. This allows a high degree of data independence.
An RDBMS has the capability to recombine the data items from different files, providing powerful tools for data usage.

What is normalization?

Database normalization is a data design and organization process applied to data structures based on rules that help build relational databases.
In relational database design, the process of organizing data to minimize redundancy. Normalization usually involves dividing a database into two or more tables and defining relationships between the tables.
The objective is to isolate data so that additions, deletions, and modifications of a field can be made in just one table and then propagated through the rest of the database via the defined relationships.

What are different normalization forms?

1NF: Eliminate Repeating GroupsMake a separate table for each set of related attributes, and give each table a primary key. Each field contains at most one value from its attribute domain.

2NF: Eliminate Redundant DataIf an attribute depends on only part of a multi-valued key, remove it to a separate table.

3NF: Eliminate Columns Not Dependent On Key If attributes do not contribute to a description of the key, remove them to a separate table. All attributes must be directly dependent on the primary key

BCNF: Boyce-Codd Normal FormIf there are non-trivial dependencies between candidate key attributes, separate them out into distinct tables.

4NF: Isolate Independent Multiple RelationshipsNo table may contain two or more 1:n or n:m relationships that are not directly related.

5NF: Isolate Semantically Related Multiple Relationships There may be practical constrains on information that justify separating logically related many-to-many relationships.

ONF: Optimal Normal FormA model limited to only simple (elemental) facts, as expressed in Object Role Model notation.

DKNF: Domain-Key Normal FormA model free from all modification anomalies.
Remember, these normalization guidelines are cumulative. For a database to be in 3NF, it must first fulfill all the criteria of a 2NF and 1NF database.

What is Stored Procedure?

A stored procedure is a named group of SQL statements that have been previously created and stored in the server database.
Stored procedures accept input parameters so that a single procedure can be used over the network by several clients using different input data.
And when the procedure is modified, all clients automatically get the new version. Stored procedures reduce network traffic and improve performance. Stored procedures can be used to help ensure the integrity of the database.e.g. sp_helpdb, sp_renamedb, sp_depends etc.

What is Trigger?

A trigger is a SQL procedure that initiates an action when an event (INSERT, DELETE or UPDATE) occurs.
Triggers are stored in and managed by the DBMS.
Triggers are used to maintain the referential integrity of data by changing the data in a systematic fashion.
A trigger cannot be called or executed; the DBMS automatically fires the trigger as a result of a data modification to the associated table.
Triggers can be viewed as similar to stored procedures in that both consist of procedural logic that is stored at the database level.
Stored procedures, however, are not event-drive and are not attached to a specific table as triggers are.
Stored procedures are explicitly executed by invoking a CALL to the procedure while triggers are implicitly executed.
In addition, triggers can also execute stored procedures.Nested

Trigger:

A trigger can also contain INSERT, UPDATE and DELETE logic within itself, so when the trigger is fired because of data modification it can also cause another data modification, thereby firing another trigger.
A trigger that contains data modification logic within itself is called a nested trigger.

What is View?

A simple view can be thought of as a subset of a table.
It can be used for retrieving data, as well as updating or deleting rows.
Rows updated or deleted in the view are updated or deleted in the table the view was created with.
It should also be noted that as data in the original table changes, so does data in the view, as views are the way to look at part of the original table.
The results of using a view are not permanently stored in the database. The data accessed through a view is actually constructed using standard T-SQL select command and can come from one to many different base tables or even other views.

What is Index?

An index is a physical structure containing pointers to the data.
Indices are created in an existing table to locate rows more quickly and efficiently.
It is possible to create an index on one or more columns of a table, and each index is given a name.
The users cannot see the indexes, they are just used to speed up queries. Effective indexes are one of the best ways to improve performance in a database application. A table scan happens when there is no index available to help a query.
In a table scan SQL Server examines every row in the table to satisfy the query results. Table scans are sometimes unavoidable, but on large tables, scans have a terrific impact on performance.
Clustered indexes define the physical sorting of a database table’s rows in the storage media.
For this reason, each database table may have only one clustered index.Non-clustered indexes are created outside of the database table and contain a sorted list of references to the table itself.

Friday, March 28, 2008

Alphabetical Paging in a Gridview control

protected void gvCategories_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Pager)
{
TableCell cell = e.Row.Cells[0];
cell.ColumnSpan = 2;
for (int i = 65; i <= (65 + 25); i++)
{
LinkButton lb = new LinkButton();
lb.Text = Char.ConvertFromUtf32(i) + " ";
lb.CommandArgument = Char.ConvertFromUtf32(i);
lb.CommandName = "AlphaPaging";
cell.Controls.Add(lb);
}
}
}
protected void gvCategories_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("AlphaPaging"))
{
string connectionString = "Server=localhost;Database=Northwind;Trusted_Connection=true";
string selectQuery = "SELECT CategoryID, CategoryName FROM Categories WHERE CategoryName LIKE '" + e.CommandArgument + "%'";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(selectQuery,myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
gvCategories.DataSource = ds;
gvCategories.DataBind();
}
}

Friday, January 18, 2008

Hide parts of the page while printing

first of all create a css as follows

style type="text/css" media="print">
.NonPrintable
{
display: none;
}

/style>

then use class name to NonPrintable to the element which You don't want to print on the paper

In the print style sheet, you can also hide other elements like your menu, header, footer or whatever it is you don't want to be printed:

.NonPrintable, #Menu, #Footer
{
display: none;
}

For detail see this article