views:

72

answers:

4

I have the following c# code to call stored procedure testproc, but when i run this application it displays saying that could not find stored procedure testproc, do i need to make any changes in syntax to call stored procedure. This is my c# code behind to call stored procedure

SqlConnection con = new SqlConnection();
con.ConnectionString = "data source='example.com';user id='sa';password='password';persist security info=False;initial catalog=Test;Connect Timeout=100; Min Pool Size=100; Max Pool Size=500";
con.Open();

DataSet ds = new DataSet();
SqlCommand com = new SqlCommand("testproc",con );
SqlDataAdapter sqlda = new SqlDataAdapter(com);
//sqlda.SelectCommand.CommandText = "SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng,Keyword, ( 6371 * ACOS( COS( (12.925432/57.2958) ) * COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (77.5940171/57.2958) ) + SIN( 12.925432/57.2958 ) * SIN(  Lat/57.2958  ) ) ) AS distance FROM Business_Details where( (StreetName like '%jayanagar%')and (Keyword like '%plumbing%' ))ORDER BY distance;";
//sqlda.CommandText = "select * from business where(( distance<'" + radius + "' )and (StreetName like '%" + streetname + "%')and (Keyword like '%" + keyword1 + "%' )) order by distance";
//com.CommandText = "testproc ";
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@lat1",SqlDbType.Float,50,lat1));
com.Parameters.Add(new SqlParameter("@lng1",SqlDbType.Float,50,lng1));
com.Parameters.Add(new SqlParameter("@radius1",SqlDbType.Int,10,radius1));
com.Parameters.Add(new SqlParameter("@streetname", SqlDbType.VarChar, 50, streetname));
com.Parameters.Add(new SqlParameter("@keyword1", SqlDbType.VarChar, 50, keyword1)); 
com.Parameters[0].Value = lat1;
com.Parameters[1].Value = lng1;
com.Parameters[2].Value = radius1;
com.Parameters[3].Value = streetname;
com.Parameters[4].Value = keyword1;
try
{                
    sqlda.Fill(ds);
    con.Close();
}
catch (Exception e)
{
    con.Close();
}

This is my stored procedure i have written in sql server it runs sucessfully in sql server

USE [Test]
GO
/****** Object:  StoredProcedure [dbo].[tesproc]    Script Date: 09/01/2010 13:00:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 ALTER PROCEDURE [dbo].[tesproc]
    -- Add the parameters for the stored procedure here
    @a float, @b float, @d int,@s varchar(50),@k varchar(50)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    select Id, Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng , ( 6371 * ACOS( COS( (@a/57.2958) ) * COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (@b /57.2958) )  + SIN( @a/57.2958 ) * SIN(  Lat/57.2958  ) ) ) as distance from business_details where (( 6371 * ACOS( COS( (@a/57.2958) ) * COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (@b /57.2958) )  + SIN( @a/57.2958 ) * SIN(  Lat/57.2958  ) ) )<@d and StreetName like '%'+ @s + '%' and Keyword like '%'+ @k +'%')
END
+5  A: 

Your ALTER statement calls it tesproc, but your SQL command calls it testproc

LittleBobbyTables
Thanks for the reply ,I am not able to track your answer please can you be more clear
mahesh
Your stored procedure is called `tesproc` with only one T. The following line has testproc spelled with TWO T's: `SqlCommand com = new SqlCommand("testproc",con );`. One of these is a typographical error. I can't be much more clear than that.
LittleBobbyTables
Thanks for your reply , sorry from my side i did carefully notice that their in spelling mistake .
mahesh
+3  A: 

Check your spelling, your procedure is called

[dbo].[tesproc]

and your code is calling

SqlCommand("testproc",con );

You can also add parameters using

Parameters.AddWithValue(string parameterName, Object value)

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

if you wanted to :)

Dave
Thanks for your reply, I did not notice that spelling mistake at allthanks for the reply
mahesh
+1  A: 

Instead of this bulky code

com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@lat1",SqlDbType.Float,50,lat1));
com.Parameters.Add(new SqlParameter("@lng1",SqlDbType.Float,50,lng1));
com.Parameters.Add(new SqlParameter("@radius1",SqlDbType.Int,10,radius1));
com.Parameters.Add(new SqlParameter("@streetname", SqlDbType.VarChar, 50, streetname));
com.Parameters.Add(new SqlParameter("@keyword1", SqlDbType.VarChar, 50, keyword1)); 
com.Parameters[0].Value = lat1;
com.Parameters[1].Value = lng1;
com.Parameters[2].Value = radius1;
com.Parameters[3].Value = streetname;
com.Parameters[4].Value = keyword1;

And you are assigning value again to parameters

use AddWithValue method to add parameter to command

com.Parameters.AddWithValue("@lat1", lat1));
com.Parameters.AddWithValue("@lng1", lng1));
com.Parameters.AddWithValue("@radius1", radius1));
com.Parameters.AddWithValue("@streetname", streetname));
com.Parameters.AddWithValue("@keyword1", keyword1));
Pranay Rana
Thanks for the suggestions ,I made changes to the code com.Parameters.AddwithValue("@lat1",lat1); its helpfull thank you.
mahesh
+1  A: 

Anyway your code should look like this:

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlComamnd command = connection.CreateCommand())
{
    command.CommandText = commandText;
    command.CommandType = CommandType.StoredProcedure;

    command.Parameters.Add("@lat1", SqlDbType.Float,50, lat1).Value = lat1;
    command.Parameters.Add("@lng1", SqlDbType.Float,50, lng1).Value = lng1;
    command.Parameters.Add("@radius1", SqlDbType.Int,10, radius1).Value = radius1;
    command.Parameters.Add("@streetname", SqlDbType.VarChar, 50, streetname).Value = streetname;
    command.Parameters.Add("@keyword1", SqlDbType.VarChar, 50, keyword1).Value = keyword1;

    connection .Open();
    DataSet ds = new DataSet();
    using (SqlDataAdapter adapter = neq SqlDataAdapter(command))
    {
        adapter.Fill(ds);                
    }
}
abatishchev
@mahesh: Thanks, glad it helped! :)
abatishchev