Какой объект показывать таблицы (форма Windows) из SQL C # - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть два вопроса в принципе. Я искал совсем немного. Но я в основном нахожу консольные приложения, которые настолько просты, что я понимаю их в отношении SQL.

Однако - я беру пользовательский ввод из своего класса представления и отправляю его методом в класс соединения. Я хочу, чтобы класс connect обрабатывал всю работу с SQL. Теперь у меня есть рабочее соединение, и я пишу правильный оператор SQL. Как мне вернуть его в класс представления и что бы вы порекомендовали, как ListBox.

Когда мы делали это в Java, мы получили набор результатов и перевели его, чтобы он поместился в jtable. Интересно, как я могу решить эту проблему в Visual Studio.

public void askSQL (string sqlQuestion)
{
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = sqlQuestion;
    cmd.Connection = connector;

    try
    {
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            MessageBox.Show("Du läser in data");   
        }
    }
    catch (Exception e)
    {
        MessageBox.Show("Fel vid anslutningen!" + e);
    }
}

У меня в настоящее время нет проблем с кодом. Соединение работает, и я получаю несколько ответов "Du läser in data", поскольку в моей таблице несколько столбцов и строк.

1 Ответ

1 голос
/ 01 февраля 2012

Функция возвращает объект DataTable, который будет заполнен данными базы данных:

public DataTable askSQL (string sqlQuestion)
{
    DataTable table = new DataTable();
    try
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(sqlQuestion, connector))
        {
            adapter.Fill(table);
        }
    }
    catch (Exception e)
    {
        MessageBox.Show("Fel vid anslutningen!" + e);
    }
    return table;
}

Это вернет что-то максимально приближенное к структуре таблицы. DataTable имеет коллекцию Rows, каждая строка содержит данные одной записи из базы данных, а каждый DataRow имеет коллекцию ItemArray со значениями поля.

Например, чтобы получить доступ к полю «Электронная почта» из второй строки, введите такой код:

DataTable table = connect.askSQL("Select Email From Users Where UserId In (1, 2)");
string email = table.Rows[1]["Email"].ToString();

Вы можете перебирать строки с помощью простого цикла:

foreach (DataRow row in table.Rows)
{
    string email = row["Email"].ToString();
    MessageBox.Show("Current email: " + email);
}

Надеюсь, это достаточно информации. :)

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