Сделал этот запрос в SQL Server Management Studio Express, как его использовать? - PullRequest
0 голосов
/ 10 июля 2010

Для своей базы данных я создаю новый запрос и пишу

select * from dbname

, используя SQL Server Management Studio Express 2005. Сохраняя его под именем SQLQuery1.sql на рабочем столе.

Теперь я бынравится вызывать этот запрос из кода C # при нажатии кнопки ASP.NET и отображать результаты в виде таблицы.

Как мне вызвать запрос?Могу ли я попросить Visual Studio 2008 выполнить запрос, хранящийся в sqlquery1.sql?

Где хранить результаты, чтобы я мог связать их с элементами управления отображением, например, с сеткой, или просмотреть данные?

Это веб-сайт на C #, ASP.NET, Visual Studio 2008, и база данных находится на одном компьютере с использованием SQL Server 2005 Express

Ответы [ 2 ]

4 голосов
/ 11 июля 2010

Вы не можете просто выполнить скрипт SQL, который вы сохранили на рабочем столе вашего компьютера, с веб-сайта ASP.NET.

Вы можете либо:

  • превратить ваш запрос в хранимую процедуру в SQL Server, что-то вроде:

    CREATE PROCEDURE dbo.proc_MyQuery
    AS
       SELECT (list of columns) 
       FROM dbo.MyTable
       WHERE (condition)
    

    Когда вы сделаете это, вы можете создать SqlCommand в своем коде C # и вызвать эту хранимую процедуру и получить результаты обратно.

или

  • Вы можете выполнить запрос непосредственно из кода C #, создав объект SqlConnection и SqlCommand и выполнив этот оператор SQL.

Это абсолютно базовые функции ADO.NET - для этого вы должны найти тонны учебных ресурсов в Интернете.

Например:

Какой бы путь вы ни пошли, вам в основном нужно иметь SqlConnection для вашей базы данных, а затем SqlCommand для выполнения запроса. Если вы хотите сохранить данные, чтобы вы могли как связать их с Gridview, так и перемещаться по ним в коде, вы, вероятно, захотите сохранить их в DataTable. Итак, ваш код будет выглядеть примерно так:

DataTable resultTable = new DataTable();

using(SqlConnection con = new SqlConnection("your connection string here"))
{
    string sqlStmt = "SELECT (columns) FROM dbo.YourTable WHERE (condition)";

    using(SqlCommand cmd = new SqlCommand(sqlStmt, con))
    {
        SqlDataAdapter dap = new SqlDataAdapter(cmd);
        dap.Fill(resultTable);
    }
}

и затем для привязки к сетке вы должны использовать что-то вроде:

myGridView.DataSource = resultTable;
myGridView.DataBind();

и для навигации по DataTable вы можете просмотреть .Rows() коллекцию строк данных.

1 голос
/ 11 июля 2010

В вашем обработчике событий на стороне сервера вам нужно открыть файл с рабочего стола, прочитать SQL, а затем использовать SQL для привязки данных к сетке.

Это будет зависеть от идентификатора, под которым выполняется код веб-сайта, имеющего доступ для чтения к рабочему столу. По умолчанию этого не произойдет, поэтому вам потребуется предоставить это удостоверение (NETWORK_SERVICE?). Это может открыть ужасные дыры в безопасности.

Вам лучше переместить SQL куда-нибудь более доступный, например, web.config или файл в каталоге веб-сайта.

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