Как использовать как ключевое слово в SQL-запрос - PullRequest
0 голосов
/ 31 августа 2010

У меня есть SQL-запрос, показанный ниже. Я хочу использовать переменные streetname, keyword1, radius и выполнять SQL-запрос, используя ключевое слово like, но их проблема с синтаксисом запроса может помочь любому

  protected void CreateXML(string keyword1, string streetname, string lat, string lng, string radius)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "data source='192.168.0.221';user id='sa';password='$sql123';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();
        SqlDataAdapter sqlda = new SqlDataAdapter(com);
        sqlda.SelectCommand.CommandText = "SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng, ( 6371 * ACOS( COS( (12.925432/57.2958) ) * COS(  (Lat/57.2958)  ) * COS( ( Lng/57.2958 ) - (77.591667/57.2958) ) + SIN( 12.925432/57.2958 ) * SIN(  Lat/57.2958  ) ) ) AS distance FROM Business_Details where( (distance < '"+radius+"')and(StreetName like '%streetname%')and (Keyword like '%keyword1%') )ORDER BY distance";
        sqlda.SelectCommand.Connection = con;
        sqlda.Fill(ds);
        con.Close();
}

Ответы [ 2 ]

6 голосов
/ 31 августа 2010

Да, вам нужно сделать это -

"...like '%" + streetname + "%') and (keyword like '%" + keyword1 + "%') )..."

РЕДАКТИРОВАТЬ: Как Роб упоминает в комментарии, редактирование этого ответа для большей безопасности -

"...like '%' + @streetname + '%') and (keyword like '%' + @keyword1 + '%') )..."

Затем вам нужно добавитьэти параметры объекта команды -

command.Parameters.Add("@streetname", SqlDbType.VarChar);
command.Parameters["@streetname"].Value = streetname;
command.Parameters.Add("@keyword1", SqlDbType.VarChar);
command.Parameters["@keyword1"].Value = keyword1;
0 голосов
/ 31 августа 2010

Если вы не получаете сообщение об ошибке, а запрос просто не возвращает никаких данных, вам нужно объединить строку запроса, как Сачин Шанбхаг уже говорил до меня.

Но если вы действительно получаете сообщение о том, что в вашем синтаксисе SQL есть ошибка, я не думаю, что это из-за ключевого слова LIKE, потому что технически этот синтаксис правильный:

Keyword like '%keyword1%'

Если у вас действительно есть ошибка в вашем синтаксисе, это, вероятно, из-за «ACOS (COS (x) * 24534»). Попробуйте пропустить это для первого шага и просто выполните «SELECT * FROM ...» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...