У меня есть следующий код C# для вызова хранимой процедуры testproc
, но когда я запускаю это приложение, он говорит, что не смог найти хранимую процедуру testproc.Ошибка при вызове хранимой процедуры с C#
Это мой C# код позади, чтобы вызвать хранимую процедуру:
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();
}
Это моя хранимая процедура, я написал в SQL Server. Он успешно работает в сервере SQL
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
Я знаю, что это локальная БД, и это выглядит как пароль тестирования, но вы всегда должны быть осторожными отправку сведений о соединении. :) – DavidGouge
Спасибо за ваше предложение от следующего я не опубликую какие-либо подробности подключения. – mahesh