Что на самом деле возвращают адаптеры таблиц C #? - PullRequest
1 голос
/ 16 июня 2010

стек переполнение !

Я работаю над приложением, которое манипулирует таблицами SQL в приложении Windows Form. До сих пор я использовал только предварительно сгенерированные запросы Fill и самостоятельные запросы обновления и удаления (которые ничего не возвращают).

Я заинтересован в сохранении значения одного значения из одного столбца (имя 'nchar (15)'), и хотя я легко написал код SQL для возврата этого значения в приложение, я понятия не имею что будет возвращено как .

SELECT [Contact First Name] FROM ContactSkillSet
WHERE [Contact ID] = @CurrentID

Может ли результат быть сохранен непосредственно в виде строки? Я должен бросить это? Вызвать метод toString?

Спасибо!

Редактировать: Интересно, что следующие работы:

String firstName = this.contactSkillSetTableAdapter.GrabFirstName(userKey);

Радости мастера данных Visual Studio, я полагаю.

Ответы [ 3 ]

2 голосов
/ 16 июня 2010

Если вы планируете вернуть один результат из вашего запроса, вы всегда можете использовать метод ExecuteScalar для класса SqlCommand и затем привести его к строке (см. Пример в первой ссылке)., он приводит его к Int32, но тот же принцип для строк).

2 голосов
/ 16 июня 2010

TableAdapter используется для заполнения DataTable.Результатом вашего примера запроса по-прежнему будет DataTable, но с одним столбцом в одной строке.Вы можете получить значение с помощью:

var adapter = new SomeKindOfTableAdapter();
var dataTable = new DataTable();

adapter.Fill(dataTable);

string contactFirstName = (string)dataTable.Rows[0][0];

Существуют и другие способы получения значения без использования адаптера таблицы:

string query = @"SELECT [Contact First Name] 
                FROM ContactSkillSet 
                WHERE [Contact ID] = @Current";

string result;

using(SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();

    using(SqlCommand command = new SqlCommand(query, conn))
    {
        result = (string)command.ExecuteScalar();
    }
}
0 голосов
/ 16 июня 2010

Оператор SQL, который возвращает одно значение, называется скалярным запросом. Обычно операторы, которые используют агрегатные команды, такие как COUNT, MAX и MIN, попадают в эту категорию. Другие утверждения, такие как ваш пример, также считаются скалярными.

По сути, вы можете рассматривать это как любой другой запрос. Убедитесь, что есть хотя бы одна строка, и если она есть, приведите нулевой столбец строки к соответствующему типу данных. Если вы используете наборы данных со строго типизированными данными, есть некоторые функции, облегчающие эту задачу, но это не обязательно.

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