[C#] [WPF] Поместить данные из SqlDataAdapter в DataGrid

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Geass, 30 Apr 2012.

  1. Geass

    Geass New Member

    Joined:
    12 Apr 2012
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Здравствуйте, помогите пожалуйста, третий день бьюсь с проблемой. Есть хранимая функция, возвращающая таблицу:

    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"];
                    }
     
  2. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Я не совсем понял - где находиться эта функция, которую ты хочешь вызвать?Сторонний софт или имеется ввиду, что тебе нужно сделать к БД схожий запрос как в функции?
    Если второе, то смотрим сюда - смотрим, вникаем, и адаптируем запросы к БД в примере под свои нужды.
     
  3. Geass

    Geass New Member

    Joined:
    12 Apr 2012
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Функция в 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"];