Как получить результат SQL, сохраненный в переменную C #? - PullRequest
12 голосов
/ 18 февраля 2011

У меня проблемы с поиском, как сохранить результат SQL в строку или любой другой тип результата, возвращаемого результатом.

Мой запрос SQL:

SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE 't%'

Здесь мне нужна функциясуммирует длину всех строк данных, где заголовок начинается с буквы «Т», при выполнении запроса в MS-SQL он возвращает «188,99» (тип SQL десятичный)

У меня вопрос, какя могу сохранить это значение в переменную C #?Запрос всегда возвращает ОДНУ строку с определенным значением, которое я хочу сохранить в переменную.У меня есть функция C # для выполнения запроса, мне просто нужно, чтобы значение из этой строки, 188,99, было сохранено в переменную.Любые предложения - это круто, независимо от того, сохранен ли результат в виде десятичной переменной или строки.

Ответы [ 3 ]

20 голосов
/ 18 февраля 2011

Попробуйте вызвать .ExecuteScalar () для SqlCommand, который вы к нему готовите.EG:

SqlConnection connection = new SqlConnection(myConnectionString);
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE 't%'";

int result = ((int)cmd.ExecuteScalar());
connection.Close();

Вы можете открывать и закрывать SqlConnections столько раз, сколько хотите (это SoP - открывать и закрывать каждый раз, когда вы выполняете операцию, или серии операций одним и тем же способом), поскольку .Net недействительно закройте соединение по-настоящему, оно «мягко закроет» его и вернет действующее соединение обратно в пул соединений для последующей переработки.

5 голосов
/ 18 февраля 2011

Вы можете использовать SqlDataReader. Вот образец:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnectionString"].ToString());


SqlCommand read_command = new SqlCommand("SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE '@t%'", con);
        read_command.Parameters.Add("@t", SqlDbType.NVarChar).Value = Str;
        SqlDataReader read_rd;
        string SUM ;
        try
        {
            con.Open();
            read_rd = read_command.ExecuteReader();
            if (read_pass_rd.HasRows)
            {
                while (read_rd.Read())
                {
                    SUM = read_rd.GetString(0);
                }
            }
            read_rd.Close();
            con.Close();
        }
        catch (Exception)
        {
            if (con.State == ConnectionState.Open)
                con.Close();
        }

и 'Str' - это строка, которую вы ищете, а 'SUM' - это ответ.

0 голосов
/ 18 февраля 2011

Вам необходимо подключить C # к вашей базе данных с помощью некоторых из доступных методов:

  1. LinQ to SQL
  2. ADO.NET
  3. LinQ to Entities

Я бы подумал, что ADO.NET - это самый простой и простой способ сделать это, учитывая фактический запрос.

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