Здравствуйте, помогите пожалуйста, третий день бьюсь с проблемой. Есть хранимая функция, возвращающая таблицу: Code: ALTER FUNCTION [dbo].[SearchBook] ( @BookName nvarchar(MAX) = NULL ) RETURNS TABLE RETURN ( SELECT * FROM dbo.Books WHERE (BookName LIKE ('%' + @BookName + '%') OR @BookName IS NULL) ) Как можно вызвать эту функцию из кода C# и поместить эту таблицу в DataGrid? По мануалам смог сделать вот так, но что-то оно не работает... Code: using (SqlConnection connection = new SqlConnection(strcon)) { string book = bookName.Text == "" ? "DEFAULT" : bookName.Text; string QUERY = String.Format("SELECT * FROM SearchBook('{0}')", book); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.TableMappings.Add("Books", "BooksSearch"); connection.Open(); SqlCommand command = new SqlCommand(QUERY, connection); command.CommandType = CommandType.Text; adapter.SelectCommand = command; DataSet dataSet = new DataSet("BooksSearch"); adapter.Fill(dataSet); connection.Close(); booksGrid.DataContext = dataSet.Tables["BooksSearch"]; }
Я не совсем понял - где находиться эта функция, которую ты хочешь вызвать?Сторонний софт или имеется ввиду, что тебе нужно сделать к БД схожий запрос как в функции? Если второе, то смотрим сюда - смотрим, вникаем, и адаптируем запросы к БД в примере под свои нужды.
Функция в MSSQL Server'е, на это намекает хотя бы использование SqlConnection Собственно с проблемой разобрался, прочитав старую книжку 2003-его года (внезапно так, листал её не надеясь найти что либо нужное). Code: string book = bookName.Text == "" ? "DEFAULT" : "'" + bookName.Text + "'"; SqlDataAdapter adapter = new SqlDataAdapter(String.Format("SELECT * FROM SearchBook({0})", book), strcon); DataSet dataSet = new DataSet(); adapter.Fill(dataSet, "Books"); booksGrid.DataContext = dataSet.Tables["Books"];