При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан. Затем: Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз. |
Работа с данными
Создание таблицы с помощью запросов
Вплоть до этого места мы выполняли команды по извлечению таблиц и данных из таблиц, полагая, что сами таблицы были созданы кем-то до нас. Это, действительно, наиболее реальная ситуация, когда небольшое количество людей создают таблицы, которые затем используются другими людьми. Тем не менее особая область SQL, называемая DDL (Язык Определения Данных), специально работает с созданием объектов данных.
Таблицы создаются командой create table. Эта команда создает пустую таблицу — таблицу без строк. Команда create table в основном определяет имя таблицы в виде описания набора имен столбцов, указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь по крайней мере один столбец.
Синтаксис команды create table : 2Перед выполнением этого запроса убедитесь в том, что вы работаете с базой данных NorthwindCS. Или используйте команду use NorthwindCS .
create table ClientInfo ( FirstName varchar(20), LastName varchar(20), Address varchar(20), Phone varchar(15) );
После выполнения этого запроса в окне Messages появляется сообщение:
The command(s) completed successfully.
Перезапустите Query Analyzer. В базе данных NorthwindCS появилась созданная нами таблица (рис. 4.16):
Итак, мы создали таблицу, состоящую из четырех полей, типа varchar, причем для трех полей было зарезервировано 20 байт, а для одного — 15. Значение полей на заполнены — на это указывает величина Null.
Вы можете удалить созданную таблицу непосредственно в интерфейсе Query Analyzer, щелкнув правой кнопкой и выбрав Delete.
Команды изменения языка DML
Значения могут быть помещены и удалены из полей, тремя командами языка DML (Язык Манипулирования Данными):
- insert (вставить);
- update (изменить);
- delete (удалить).
Команда insert имеет свои особенности:
- При указании значений конкретных полей вместо использования каких-либо значений можно применять ключевое слово DEFAULT.
- Вставка пустой строки приводит к добавлению пробела ' ', а не значения NULL.
- Строки и даты задаются в апострофах.
- Не задавайте данные для столбца, имеющего свойство IDENTITY.
- Можно задать NULL явно, можно задать DEFAULT.
Примеры:
insert into ClientInfo (FirstName, LastName, Address, Phone) values('Petr','Petrov','Chehova 13','1234567');
Однократное выполнение этого запроса (нажатие клавиши F5 один раз) приводит к добавлению одной записи. Добавляем еще несколько записей, изменяя значения value:
insert into ClientInfo (FirstName, LastName, Address, Phone) values('Ivan',Ivanov,'Naberejnaya 13','1234568'); insert into ClientInfo (FirstName, LastName, Address, Phone) values(null,'Sidorov','Naberejnaya 25','1234569');
Извлечем все записи созданной таблицы (рис. 4.17):
select * from ClientInfo;
Убедимся в том, что третья запись поля FirstName действительно содержит неопределенное значение null (а не строку NULL), c помощью следующего запроса (рис. 4.18):
select * from ClientInfo where FirstName is null;
Команда update позволяет изменять заданные значения записей:
update ClientInfo set FirstName = 'Andrey' where FirstName = 'Petr';
В этом случае в первой записи поля FirstName значение Petr изменится на Andrey (рис. 4.19):
Если не указывать значение, которое необходимо изменить, команда update затронет все записи (рис. 4.20).
update ClientInfo set FirstName = 'Andrey';
Команда delete позволяет изменять заданные значения записей:
delete from ClientInfo where LastName like 'Petrov';
Результатом этого запроса будет удаление первой записи из таблицы ClientInfo.
delete from ClientInfo;
Этот запрос удаляет все записи из таблицы, но не удаляет саму таблицу (рис. 4.21):
Запросы с командами insert, update и delete могут содержать в себе все прочие конструкции языка SQL.