Thursday, July 23, 2009

Executing a stored procedure with output parameter doesnt return any value.

When you use a DataReader object to read data from SqlServer, the parameter passed in as output parameter doesnot get assigned even after excuting the reader.

Solution:- Close the DataReader and your value will get returned.

Reason:- The output parameter is returned at the end of the data stream when you use a DataRader.

Reference:- http://support.microsoft.com/kb/308621

Wednesday, April 8, 2009

Sql Server 2005 Linked Server Scripting issue

I generated the 'CREATE' script of a linked server in my DB and got the following script

EXEC master.dbo.sp_addlinkedserver @server = N'MYSERVERNAME', @provider=N'SQLNCLI', @datasrc=N'MYINSTANCENAME, @catalog=N'SOMENAME'

I dropped the same and tried to add it with the above script and it gave me the error

Msg 15429, Level 16, State 1, Procedure sp_addlinkedserver, Line 42
'(null)' is an invalid product name.

Solution :- Add the product name also in the sp parameters.

An sp_helptext on the sp showed this:-

create procedure sys.sp_addlinkedserver
@server sysname, -- server name
@srvproduct nvarchar(128) = NULL, -- product name (dflt to ss)
@provider nvarchar(128) = NULL, -- oledb provider name
@datasrc nvarchar(4000) = NULL, -- oledb datasource property
@location nvarchar(4000) = NULL, -- oledb location property
@provstr nvarchar(4000) = NULL, -- oledb provider-string property
@catalog sysname = NULL -- oledb catalog property
as


etc etc ...

The Script Linked Server as Create To command somehow missed the @srvproduct parameter.

So the modified sql statement will be

EXEC master.dbo.sp_addlinkedserver @server=N'MYSERVERNAME', @srvproduct=N'MSSQLSERVER', @provider=N'SQLNCLI', @datasrc=N'MYINSTANCENAME, @catalog=N'SOMENAME'

Wednesday, March 4, 2009

Regex for matching relative URLs

This Regex will match the following Relative URLs
REGEX
-----
^(/[a-zA-Z0-9]+)+(\.[a-zA-Z]{2,4})((\?\w*=?\w*)(\&\w+=\w+)*)?$

URLs
----
/folder1/page.ax
/folder1/page.php
/folder1/folder2/page.aspx
/folder1/page.aspx?qstring1=value1 (likewise n number of query strings)

Will not match

/folder1?/page.aspx
/folder1/page.aspx?=value1
/folder1/page.aspx?qstring1=value1?qstring2=value2


^(/[a-zA-Z0-9]+)+(\.[a-zA-Z]{2,4})((\?\w*=?\w*)(\&\w+=\w+)*)?$

Friday, February 27, 2009

LINQ ERROR

I was working with a LINQ sample and stumbled upon the following error.
"The non-generic type 'System.Collections.IEnumerable' cannot be used with type arguments"

XML file I was using :-


Code used :-


//The application is a ASP.net page
XDocument xDoc = XDocument.Load(HttpContext.Current.Server.MapPath("Persons.xml"));

IEnumerable queryNew = from e in xDoc.Descendants("Person")

select new Person{
FirstName = e.Element("FirstName").Value,
LastName = e.Element("LastName").Value,
Salary = Convert.ToInt32(e.Element("Salary").Value)
};


Solution :- IEnumerable is present in both System.Collections.Generic and System.Collections name spaces. The query returns a generic collection. So in this case We should use System.Collections.Generic. So when I provided a "using System.Collections.Generic;" on top of the page, it did the trick for me.

Wednesday, December 10, 2008

Check box list validation

The following javascript will validate that atleast one checkbox is checked in a checkboxlist . And if a checkbox named 'other' is checked , it will check that a textbox that is next to it is not empty .


How to get the domainname of an ASP.Net application

If the application URL is something like www.myDomain.com/home/homepage.aspx , to get the http://www.mydomain.com/ part from it , we can use the following
(1)HttpContext.Current.Request.Url.Scheme+"://"+ HttpContext.Current.Request.Url.DnsSafeHost
or
(2)HttpContext.Current.Request.Url.Scheme+"://"+ HttpContext.Current.Request.Url.Host

Tuesday, December 9, 2008

My first post...

As developers we come accross many issues while coding . I was thinking of writing down some of the solutions that I came accross , as blog entries so that it might help others who face the same kind of issues.
Better late than never ;) ..