Вопросы по Listbox, Msql и конект

Тема в разделе ".NET", создана пользователем Niceday, 28 фев 2007.

  1. Niceday

    Niceday Гость

    собственно вот текст программы:

    Код (Text):
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using System.IO;

    class MainForm : Form
    {
    public MainForm()
    {
    Text = "Products";
    list = new ListBox();
    list.Location = new Point(15, 15);
    list.Size = new Size(200, 200);
    this.Controls.Add(list);
    using (SqlConnection connection = new SqlConnection("server=сервер;Type System Version=SQL Server 2005;User ID=юзер;database=база"))
    {
    connection.Open();
    if (String.Format("{0}", connection.State) == "Open")
    {
    MessageBox.Show(String.Format("Connection Status: {0} \nServer: {1} \nServer Version: {2} \nBase Name: {3}", connection.State, connection.DataSource, connection.ServerVersion, connection.Database));
    SqlCommand command = new SqlCommand("SELECT [ProductName] FROM [Products]", connection);
    SqlDataReader reader = command.ExecuteReader();

    while (reader.Read())
    {
    list.Items.Add(String.Format("{0}", reader[0]));
    }

    }
    }
    }

    public static void Main(string[] args)
    {
    Application.Run(new MainForm());
    }

    private ListBox list;
    }
    А теперь вопросы:
    1) В случае с if (String.Format("{0}", connection.State) == "Open") все работает нормально, а вот если ввести плохое имя базы даже скомпилить нельзя до конца, как этого избежатьи заменить в случае с кривым адресом просто на месаг бокс типо "can't connect"

    2) Как обрабатывать сообщения от лист бокса, понимаю что это что-то типо сообщения от кнопки в с++, но в мсдн ничего разумного найти не смог

    3) Как обратиться к определенному элементу таблицы MSQL
    while (reader.Read())
    {
    list.Items.Add(String.Format("{0}", reader[0]));
    }
    добавляет их все в листбокс, а вот по клику в лист боксе мне нужно будет вывести MessageBox'ом все остальные поля для данного элемента таблицы.

    Если кто чем поможет, зарание спасибо
     
  2. NikSoft

    NikSoft Гость

    Хороший тон в программировании - ложить строку Connection в файл конфигураций
     
  3. Pasha

    Pasha Гость

    1a. Допечатка же срабатывает: connection.State == ConnectionState.Open.
    1b. Имя базы действительна надо вынести в конфиг, почитайте в любой книге про использование System.Configuration.
    1c. Почитайте в тож же книге про обработку исключений. Сразу станет понятно как показать MessageBox при ошибке соединения.

    2. Поставить обработчик на событие ListBox.SelectedIndexChanged Event. Но лучше воспользуйтесь средствами студии.

    3. Почитайте про работу с DataSet и Master/Details страницами.
     
  4. NikSoft

    NikSoft Гость

    Можно сделать, например, так

     
  5. NikSoft

    NikSoft Гость

    Для: Niceday
    Ты положил код выборки данных в конструктор формы( MainForm). Но конструктор формы предназначен для инициализации полей обьекта. Положи код выборки данных в метод
    Код (Text):
    private void Form1_Load(object sender, EventArgs e)
    {
    ...
    }
     
  6. Niceday

    Niceday Гость

    Пришел я к одному выводу, книжка нужна, т.к. вопросы возникают и возникают, простые по шарпу не катят т.к. они тока про консольные приложения и формы рассказывают что и так понятно, а кто может подсказать где скачать хорошую кнужку по программированию на c# для msql где сама тема рассматривается от начала и до конца с примерами кода?
     
  7. NikSoft

    NikSoft Гость

Загрузка...

Поделиться этой страницей