如何使用Bot应用程序从C#chatbot在SQL Server中执行存储过程?

时间:2018-11-20 21:28:51

标签: c# sql-server

这是SQL查询:

CREATE PROCEDURE get_nearest_Restaurants
    @lat FLOAT,
    @lng FLOAT
AS
BEGIN
    DECLARE @point GEOMETRY

    SET @point = GEOMETRY::Point(@lat, @lng, 4326)

    SELECT TOP (5) 
        Id, Name, City, @point.STDistance(Location) AS Location 
    FROM 
        [dbo].[Restaurants]
    ORDER BY 
        @point.STDistance(Location)
END
GO

1 个答案:

答案 0 :(得分:3)

您可以使用SqlCommand来引用您的StoredProcedure,然后使用SqlDataAdapter来获取数据。

请不要忘记通过SqlParameter传递参数。

此代码将在BotApplication中调用您的sp(get_nearest_Restaurants):

public async Task<DataTable> ExecuteSp(string lat, string lng)
{
    SqlConnection cnn = new SqlConnection("Data Source=ServerName/IP;Initial Catalog=DatabaseName;User ID=UserName;Password=Password");

    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter da = new SqlDataAdapter();
    DataTable dt = new DataTable();
    try
    {
        cnn.Open();
        cmd = new SqlCommand("get_nearest_Restaurants", cnn);
        cmd.Parameters.Add(new SqlParameter("@lat", lat));
        cmd.Parameters.Add(new SqlParameter("@lng", lng));
        cmd.CommandType = CommandType.StoredProcedure;
        da.SelectCommand = cmd;
        await Task.FromResult(da.Fill(dt)); 
    }
    catch (Exception)
    {

    }
    finally
    {
        cnn.Close();
        cmd.Dispose();
    }
    return dt;
}

要连接到SQL-Server,您应该使用SqlConnectionSqlConnection中有一个属性,即ConnectionString,它定义我们的SQL-Server在哪里以及如何连接它。