#c# #sql-server #windows-forms-designer
#c# #sql-сервер #windows-forms-designer
Вопрос:
public void filter()
{
using (SqlConnection sqlconn = new SqlConnection(@"Data Source=DESKTOP-IIBSL6N;Initial Catalog=sales_management;Integrated Security=True"))
{
SqlDataAdapter sqlad = new SqlDataAdapter("select * From Customer", sqlconn);
DataTable dtbl = new DataTable();
sqlad.Fill(dtbl);
DataView dv = dtbl.DefaultView;
dv.RowFilter = string.Format("Name like '%{0}%' and Address like '%{0}% and office_number like '" searchoffice.Text "%'and phone_number like '" searchphone.Text "%' and acount_name like '%{0}%'", searchname.Text,searchaddress.Text,searchoffice.Text,searchphone.Text,searchaccountname.Text);
customergrid.DataSource = dv.ToTable();
dtbl.DefaultView.Sort = "[Name] DESC";
}
}
Когда я запускаю этот метод в textbox.textchange()
-EventHandler, я получаю следующее исключение:
The expression contains an invalid string constant: '
Пожалуйста, помогите мне исправить исключение.
Ответ №1:
Похоже, что в строке вашего запроса отсутствовал один пробел рядом с office_number like '" searchoffice.Text "%' and phone_number
, также отсутствовал один ‘-символ и строка.Формат — несоответствие количества параметров.
Итак, попробуйте следующее:
public void filter()
{
using (SqlConnection sqlconn = new SqlConnection(@"Data Source=DESKTOP-IIBSL6N;Initial Catalog=sales_management;Integrated Security=True"))
{
SqlDataAdapter sqlad = new SqlDataAdapter("select * From Customer", sqlconn);
DataTable dtbl = new DataTable();
sqlad.Fill(dtbl);
DataView dv = dtbl.DefaultView;
dv.RowFilter = string.Format("Name like '%{0}%' and Address like ‘%{1}%’ and office_number like '" searchoffice.Text "%' and phone_number like '" searchphone.Text "%' and acount_name like '%{0}%'", searchname.Text,searchaddress.Text);
customergrid.DataSource = dv.ToTable();
dtbl.DefaultView.Sort = "[Name] DESC";
}
}
Комментарии:
1. Кажется, что также отсутствовал какой-то символ ‘, проверьте обновленную версию?
2. Также было несоответствие строки. Количество параметров формата и индексы. Будет чище иметь только параметры формата {0},{1} и т.д. И не смешивать с конкатенацией встроенных строк..
3. произошла еще одна ошибка: не удается выполнить операцию ‘Like’ в системе. Десятичная система. Строка.
4. Теперь вам нужно проверить типы данных полей и выполнить необходимые преобразования перед выполнением фильтрации. Когда TextBox.Text-values являются строками, тогда вы должны использовать decimal.Parse и т.д. Перед поиском..