Как сделать таблицу в си шарп

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Типа как записная книжка. таблица с параметрами: фио, телефон и тд. с возможностью сортировки\возрастание убывание. и чтоб данные туда шли из текстового файла. как это реализовать и какой формой лучше пользоваться из Visual Studio 2005?
Заранее огромное спасибо, очень выручите.

В качестве визуализации таблицы используй datagridview.
this.dataGridView1.Rows.Clear(); //подготовили для нового заполнения
this.dataGridView1.ColumnCount = 3;
this.dataGridView1.Columns[0].HeaderText = "ФИО";
this.dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Automatic;
this.dataGridView1.Columns[1].HeaderText = "ТЕЛЕФОН";
this.dataGridView1.Columns[1].SortMode = DataGridViewColumnSortMode.Automatic;
this.dataGridView1.Columns[2].HeaderText = "РАЗМЕР ПРОТИВОГАЗА";
this.dataGridView1.Columns[2].SortMode = DataGridViewColumnSortMode.Automatic;
Далее всё зависит от формата записей в текстовом файле. Допустим данные разделены пробелами
char [] delim = ; //разделители в текстовом файле
FileStream fs = new FileStream("input.txt",FileMode.Open,FileAccess.Read); //открыли файл
StreamReader sr = new StreamReader(fs);
while (!sr.EndOfStream) //считываем построчно
<
string s = sr.ReadLine();
string[] arr = s.Split(delim);//создали строковый массив из элементов, разделённых пробелами
this.dataGridView1.Rows.Add(arr);//создали в таблице новый row
>

Огромнейшее спасибо. Что-то нету выбрать лучший ответ, а то давно бы сделал. Решил пока хотя бы коммент написать. Очень выручили!

кто-нибудь знает способ для автоматического создания таблиц базы данных для данного класса? Я не ищу весь уровень персистентности - у меня уже есть решение для доступа к данным, которое я использую, но мне внезапно приходится хранить много информации из большого количества классов, и я действительно не хочу создавать все эти таблицы вручную. Например, задан следующий класс:

Я ожидал бы следующий SQL:

мне тоже интересно, как вы могли обрабатывать сложные типы. Например, в ранее процитированном классе, если мы изменили это на:

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

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

я помещаю эти классы в сборку, чтобы проверить ее:

и он создал следующий SQL:

некоторые дополнительные мысли. Я бы подумал о добавлении атрибута, такого как [SqlTable], в ваши классы, таким образом, он генерирует только таблицы для классов, которые вы хотите. Кроме того, это может быть убрали тонну, исправили ошибки, оптимизировали (FK Checker-шутка) и т. д. Просто для начала.

Вау, я думаю, что это самая сырая работа, которую я когда-либо видел в StackOverflow post. Молодец. , вместо построения операторов DDL в виде строк, вы должны определенно использовать объекты управления SQL Server классы, введенные с SQL 2005.

VanOrman, если вы используете SQL 2005, определенно сделайте SMO частью своего решения.

он возвращает строку для любого объекта, содержащего скрипты CREATE TABLE.

Я думаю, что для сложных типов данных, необходимо выразить их путем указания ToDB() метод, который имеет свои собственные реализации для создания таблиц в БД, и таким образом он становится автоматическим рекурсивным.

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

вы также можете заранее указать , который занятия будут или не будут преобразованы в таблицы. Что касается сложных данных, которые вы хотите отразить в базе данных, не раздувая схемы, вы можете иметь одну или несколько таблиц для разных типов. В этом примере используется целых 4:

Разработать приложение, которое демонстрирует основные операции над данными в базе данных типа MS SQL Server , а именно:

  • подключение базы данных к приложению;
  • отображение таблиц базы данных на форме;
  • добавление новой записи в базу данных;
  • редактирование записи;
  • удаление записи.

За основу взята база данных Education.dbo , процесс создания которой подробно описывается здесь.

На рисунке 1 отображена структура базы данных Education.dbo . Как видно из рисунка, база данных называется:

SQL Server (SQL Express) База данных Education.dbo

Рис. 1. База данных Education.dbo

База данных содержит две таблицы: Student и Session. Структура таблиц следующая.

Таблица Student

Таблица Session

Выполнение

1. Создать новый проект в MS Visual Studio как Windows Forms Application .

Создать новый проект типа Windows Forms Application . Пример создания нового проекта подробно описывается здесь.

2. Создание нового представления ( view ) для отображения данных таблицы Student .

Чтобы отображать данные таблиц базы данных, можно использовать разные способы. Один из них – это создание представлений ( views ), которые формируются средствами MS Visual Studio .

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

База данных SQL Server команда

Рис. 2. Вызов команды добавления нового представления

SQL Server Выбор таблица команда Add Table

Рис. 3. Выбор таблиц, на которых будет базироваться новое представление

В нашем случае выбираем таблицу Student и подтверждаем свой выбор кликом на кнопке Add . Следующим шагом нужно закрыть окно выбором кнопки Close .

После выполненных действий будет сформировано окно, в котором нужно выбрать поля, которые должны отображаться в представлении (на форме). Выбираем все поля (рисунок 4).

Соответственно, в средней области окна отображаются названия выбранных полей, таблица в которой они есть (см. рис. 4), возможность сортировки, фильтрование и прочее.

В нижней части области отображается соответствующий текст SQL -запроса, который используется для создания представления.

MS SQL Server Выбор полей таблица Student

Рис. 4. Выбор полей таблицы Student для их отображения в представлении

После выбора команды

MS SQL Server Указание имени представление

Рис. 5. Указание имени для представления

После выполненных действий, окно представления будет иметь вид как показано на рисунке 6.

MS SQL Server Представление

Рис. 6. Представление View Student в базе данных

Теперь можно размещать элемент управления DataGridView и связывать его с представлением.

3. Размещение элемента управления DataGridView и настройка связи с базой данных.

Перед размещением элемента управления DataGridView нужно перейти в режим проектирования формы « Form1.cs [Design] «.

Элемент DataGridView представляет собой таблицу, которая может отображать данные. Данный элемент управления размещается в панели ToolBox . Сначала немного корректируем размеры формы, а потом размещаем на ней элемент управления DataGridView (рисунок 7). В результате будет создан экземпляр объекта с именем dataGridView1 по умолчанию.

SQL Server Элемент управления DataGridView окно выбора источника данных

Рис. 7. Элемент управления DataGridView и окно выбора источника данных

После размещения элемента управления типа DataGridView на форме в правом верхнем углу можно выбрать настройку источника данных. Соответственно откроется окно « DataGridView Tasks «. В этом окне нужно выбрать сплывающее меню « Choose Data Source «.

На рисунке 8 показано окно « Data Source Configuration Wizard «, в котором выбирается тип источника данных. В нашем случае устанавливаем « Database «.

База данных MS SQL Server тип источника данных

Рис. 8. Выбор типа источника данных

В следующем окне (Рисунок 9) выбирается модель источника данных. Нужно выбрать DataSet .

MS SQL Server Выбор модели источника данных

Рис. 9. Выбор модели источника данных

В окне, изображенном на рисунке 10 , нужно задать соединение данных, которое нужно использовать для подключения к базе данных. В нашем случае нужно выбрать базу данных « sasha-pc\sqlexpress\Education.dbo «.

MS SQL Server соединение данных

Рис. 10. Выбор соединения данных

В следующем окне (рисунок 11) предлагается сохранить строку соединения Connection String в конфигурационный файл приложения. Оставляем все как есть и переходим к следующему окну.

Предложение сохранения Connection String конфигурационный файл

Рис. 11. Предложение сохранения строки соединения с базой данных Connection String в конфигурационном файле приложения

MS SQL Server объект база данных DataGridView

Рис. 12. Выбор объектов базы данных, которые нужно отображать в DataGridView

После выбора кнопки Finish будут отображены выбранные объекты (представление View Student ) базы данных Education.dbo (рисунок 13).

Рис. 13. Элемент управления типа DataGridView с выбранными полями представления View Student

Подобным образом можно настроить представления, которые содержат любые поля из любых таблиц базы данных. Также в одном представлении могут отображаться поля из разных таблиц.

4. Настройка вида элемента управления типа DataGridView .

Если запустить приложение на выполнение, то будут получены данные представления View Student , которое отвечает таблице Student базы данных (рисунок 14).

Как видно из рисунка 14, данные в таблице dataGridView1 отображаются нормально, но оформление можно скорректировать.

Элемент управления типа DataGridView допускает корректирование вида полей, которые отображаются.

Для вызова команд редактирования полей, достаточно вызвать контекстное меню кликом правой кнопкой мышки на элементе управления dataGridView1 .

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

  • команда блокирования элемента управления ( Lock Controls );
  • команда редактирования полей, которые отображаются в представлении ( Edit Columns… );
  • команда добавления новых полей, например вычисляемых ( Add Column ).

MS SQL Server Команда

В результате откроется окно « Edit Columns «, в котором можно настроить вид полей представления по собственному вкусу (рисунок 16).

MS SQL Server Окно настройки вида полей

Рис. 16. Окно настройки вида полей в представлении « View Student «

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

5. Строка Connection String

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

Существуют разные способы получения строки соединения с базой данных. Один из них базируется на чтении этой строки в окне Properties базы данных Education.dbo (рис. 17).

Для сохранности строки в программе вводится внутренняя переменная типа string . С помощью буфера обмена копируем строку Connection String в описанную переменную типа string .

На данный момент текст класса Form1 следующий:

6. Создание новой формы для демонстрации команд манипулирования данными.

Добавление новой формы осуществляется командой:

Имя файла новой формы оставляем по умолчанию « Form2.cs «.

На рисунке 18 изображен вид новой формы.

Размещаем на форме элементы управления следующих типов:

Нужно настроить следующие свойства элементов управления:

  • в элементе управления button1 свойство Text = « OK «;
  • в элементе управления button2 свойство Text = « Cancel «;
  • в элементе управления button1 свойство DialogResult = « OK «;
  • в элементе управления button2 свойство DialogResult = « Cancel «;
  • в элементе управления label1 свойство Text = « Num_book «;
  • в элементе управления label2 свойство Text = « Name «;
  • в элементе управления label3 свойство Text = « Group «;
  • в элементе управления label4 свойство Text = « Year «.

Также настраиваем видимость элементов управления типа TextBox . Для этого во всех элементах управления textBox1 , textBox2 , textBox3 , textBox4 значение свойства Modifiers = « public «.

7. Добавление кнопок вызова команд манипулирования данными таблицы Student .

Для дальнейшей работы нужно с помощью мышки переключиться на главную форму Form1 .

На главную форму приложения Form1 добавляем три кнопки ( Button ). Автоматически будет создано три переменных-объекта с именами button1 , button2 , button3 . В каждой из этих кнопок вносим следующие настройки (окно Properties ):

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

8. Программирование события клика на кнопке « Insert… «.

где value1 отвечает номеру зачетной книжки; value2 – фамилия студента; value3 – группа, в которой учится студент; value4 – год вступления.

Строка соединения с базой данных Connection String описывается в переменной conn_string (см. п. 5). Объект класса SqlConnection осуществляет соединение приложения с источниками данных. Кроме того, класс Connection решает задачи аутентификации пользователей, работу с сетями, идентификацию баз данных, буферизацию соединений и обработку транзакций.

Команда на языке SQL , добавляющая запись к таблице, инкапсулирована в классе SqlCommand . Конструктор класса SqlCommand принимает два параметра: строку запроса на языке SQL (переменная cmd_text ) и объект класса SqlConnection .

Метод ExecuteNonQuery() реализован в интерфейсе IDBCommand . Метод реализует SQL -команды, которые не возвращают данные. К таким командам относятся команды INSERT , DELETE , UPDATE а также хранимые процедуры, которые не возвращают данных. Метод ExecuteNonQuery() возвращает количество задействованных ним записей.

9. Программирование события клика на кнопке « Edit… «.

В этом обработчике выполняется SQL -команда UPDATE , которая изменяет текущее значение активной записи.

Начать необходимо с подключения библиотеки Microsoft.Office.Interop.Excel. Выглядеть это должно так:

Если у вас при открытии обозревателя решений – Ссылки – правая кнопка – Добавить ссылку – Сборки – в списке нет Microsoft.Office.Interop.Excel, то добавьте её через Nuget. Проект – управление пакетами NuGet – в строке поиска Excel:

Теперь создайте новый проект Windows Forms и на форму закиньте текстбокс и кнопку. На кнопки кликните два раза, откроется исходный код. В самом верху допишите следующее:

А в методе button1_Click замените так:

Вот, собственно говоря и все. Текст из текстбокса запишется в ячейку A1. Обратите внимание, что папка temp на диске уже должна существовать.

Дополнение. Прочитать первую ячейку

Это тоже просто:

Читайте также: