2013-12-06 2 views
1

Я пытаюсь использовать AND в SELECT заявлении, как показано ниже:Использование И в Select-Где

sqlc.ConnectionString = "Data source=. ; Database=LDatabase; integrated security=true"; 
    cmd.Connection=sqlc; 
    cmd.CommandText = "select * from Books where Title like '" + txtboxbook.Text + "' and Author like '" + txtboxAuthor.Text + "'"; 

    sqlc.Open(); 
    SqlDataReader R=cmd.ExecuteReader(); 
    GridView1.DataSource=R; 
    GridView1.DataBind(); 
    if (R.HasRows == false) 
     LMsg.Text = "No Items were found"; 
    else 
     LMsg.Text = GridView1.Rows.Count.ToString()+"Items were found"; 
    R.Close(); 
    sqlc.Close(); 

Когда я использую одно условие, без AND он работает отлично, но когда я добавляю, что хлопотно AND это Безразлично найти то, что я искал?

+0

Вы уверены, что искали И? есть ли у книг название и автор, которого вы отправляете? –

+0

@FilipeSilva Да, они так делают. Я копирую их из базы данных, чтобы убедиться! –

+0

Ограничьте проблему. Сначала удалите C#. Что произойдет, если вы выполните один и тот же выбор в SQL Management Studio? – acfrancis

ответ

1

Вы действительно должны посмотреть на использование parameterized query.

//cmd.CommandText = "select * from Books where Title like '" + txtboxbook.Text + "' and Author like '" + txtboxAuthor.Text + "'"; 
cmd.CommandText = "select * from Books where Title like @title and Author like @author"; 
cmd.Parameters.AddWithValue("@title", txtboxbook.Text); 
cmd.Parameters.AddWithValue("@author", txtboxAuthor.Text); 

Выберите * также плохая практика. Выберите только нужные столбцы.

+0

Сначала я параметризовал его, но он не был успешным. Кстати, я параметризую другим способом. Я должен попробовать это. –

+0

Я пробовал ваше решение. Я получил эту ошибку: неправильный синтаксис рядом с '@title'. –

+0

Я удалил знаки процента. Вам нужно будет добавить их отдельно, если вы хотите их использовать. – opnarius

Смежные вопросы