Замена данных в таблице базы данных данными MATLAB
Подключитесь к базе данных Microsoft ® Access™ и сохраните обновляемые данные в массиве ячеек. Затем обновите один столбец данных в таблице базы данных. Закройте подключение к базе данных.
Создание подключения к базе данных conn в базу данных Microsoft Access. Этот код предполагает, что вы подключаетесь к источнику данных с именем dbdemo с пустым именем пользователя и паролем.
conn = database('dbdemo','','');
Эта база данных содержит таблицу inventorytable, который содержит следующие столбцы:
productnumber
quantity
price
inventorydate
Импорт всех данных из inventorytable в качестве массива ячеек с помощью connи просмотрите первые три строки импортированных данных.
sqlquery = 'SELECT * FROM inventorytable'; results = fetch(conn,sqlquery,'DataReturnFormat','cellarray'); results(1:3,:)
ans =
3×4 cell array
{[1]} {[1700]} {[15]} {'2014-09-23 09:3…'}
{[2]} {[1200]} {[ 9]} {'2014-07-08 22:5…'}
{[3]} {[ 356]} {[17]} {'2014-05-14 07:1…'}Определите массив ячеек, содержащий имя обновляемого столбца.
colnames = {'quantity'};
Определите массив ячеек, содержащий новые данные, 2000.
data = {2000};
Обновить столбец quantity в inventorytable для продукта с productnumber равно 1.
tablename = 'inventorytable'; whereclause = 'WHERE productnumber = 1'; update(conn,tablename,colnames,data,whereclause)
Повторно импортировать данные и просмотреть обновленное содержимое в inventorytable.
results = fetch(conn,sqlquery,'DataReturnFormat','cellarray'); results(1:3,:)
ans =
3×4 cell array
{[1]} {[2000]} {[15]} {'2014-09-23 09:3…'}
{[2]} {[1200]} {[ 9]} {'2014-07-08 22:5…'}
{[3]} {[ 356]} {[17]} {'2014-05-14 07:1…'}В inventorytable данные, продукт с номером продукта, равным 1 имеет обновленное количество 2000 единиц.
Закройте подключение к базе данных.
close(conn)
Подключитесь к базе данных Microsoft Access и сохраните обновляемые данные в виде таблицы. Затем обновите несколько столбцов данных в таблице базы данных. Закройте подключение к базе данных.
Создание подключения к базе данных conn в базу данных Microsoft Access. Этот код предполагает, что вы подключаетесь к источнику данных с именем dbdemo с пустым именем пользователя и паролем.
conn = database('dbdemo','','');
Эта база данных содержит таблицу inventorytable, который содержит следующие столбцы:
productnumber
quantity
price
inventorydate
Импорт всех данных из inventorytable с помощью connи отобразить несколько строк импортированных данных.
sqlquery = 'SELECT * FROM inventorytable';
results = fetch(conn,sqlquery);
head(results)ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 20 '2014-09-23 09:38:34.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 9000 3 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 8350 5 '2011-06-18 11:45:35.000'Определите массив ячеек, содержащий имена столбцов, которые вы обновляете в inventorytable.
colnames = {'price','inventorydate'};
Определите таблицу, содержащую новые данные. Обновите цену до $15 и установите отметку времени запасов на '2014-12-01 08:50:15.000'.
data = table(15,{'2014-12-01 08:50:15.000'}, ...
'VariableNames',{'price','inventorydate'});
Обновить столбцы price и inventorydate в таблице inventorytable для номера продукта, равного 1.
tablename = 'inventorytable'; whereclause = 'WHERE productnumber = 1'; update(conn,tablename,colnames,data,whereclause)
Повторно импортировать данные и просмотреть обновленное содержимое в inventorytable.
results = fetch(conn,sqlquery); head(results)
ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 15 '2014-12-01 08:50:15.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 9000 3 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 8350 5 '2011-06-18 11:45:35.000'Продукт с номером продукта, равным 1 имеет обновленную цену $15 и отметку времени '2014-12-01 08:50:15.000'.
Закройте подключение к базе данных.
close(conn)
Подключитесь к базе данных Microsoft Access и сохраните обновляемые данные в массиве ячеек. Затем обновите несколько записей данных в таблице, используя несколько WHERE пункты. Закройте подключение к базе данных.
Создание подключения к базе данных conn в базу данных Microsoft Access. Этот код предполагает, что вы подключаетесь к источнику данных с именем dbdemo с пустым именем пользователя и паролем.
conn = database('dbdemo','','');
Эта база данных содержит таблицу inventorytable, который содержит следующие столбцы:
productnumber
quantity
price
inventorydate
Импорт всех данных из inventorytable с помощью connи отобразить первые несколько строк импортированных данных.
sqlquery = 'SELECT * FROM inventorytable';
results = fetch(conn,sqlquery);
head(results)ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 20 '2014-12-01 08:50:15.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 9000 3 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 8350 5 '2011-06-18 11:45:35.000'Определите массив ячеек, содержащий имя обновляемого столбца.
colnames = {'quantity'};
Определите массив ячеек, содержащий новые данные. Обновите количества для двух продуктов.
A = 10000; % new quantity for product number 5 B = 5000; % new quantity for product number 8 data = {A;B}; % cell array with the new quantities
Обновить столбец quantity в inventorytable для продуктов с номерами продуктов, равными 5 и 8. Создание массива ячеек whereclause который содержит два WHERE предложения, по одному для каждого продукта.
tablename = 'inventorytable'; whereclause = {'WHERE productnumber = 5';'WHERE productnumber = 8'}; update(conn,tablename,colnames,data,whereclause)
Повторно импортировать данные и просмотреть обновленное содержимое в inventorytable.
results = fetch(conn,sqlquery); head(results)
ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 20 '2014-12-01 08:50:15.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 10000 3 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 5000 5 '2011-06-18 11:45:35.000'Продукт с номером продукта, равным 5 имеет обновленное количество 10000 единиц. Продукт с номером продукта, равным 8 имеет обновленное количество 5000 единиц.
Закройте подключение к базе данных.
close(conn)
Подключитесь к базе данных Microsoft Access и сохраните обновляемые данные в массиве ячеек. Затем обновите несколько столбцов данных в таблице, используя несколько WHERE пункты. Закройте подключение к базе данных.
Создание подключения к базе данных conn в базу данных Microsoft Access. Этот код предполагает, что вы подключаетесь к источнику данных с именем dbdemo с пустым именем пользователя и паролем.
conn = database('dbdemo','','');
Эта база данных содержит таблицу inventorytable, который содержит следующие столбцы:
productnumber
quantity
price
inventorydate
Импорт всех данных из inventorytable с помощью connи отобразить первые несколько строк импортированных данных.
sqlquery = 'SELECT * FROM inventorytable';
results = fetch(conn,sqlquery);
head(results)ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 20 '2014-12-01 08:50:15.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 9000 3 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 8350 5 '2011-06-18 11:45:35.000'Определите массив ячеек, содержащий имена обновляемых столбцов.
colnames = {'quantity','price'};
Определите массив ячеек, содержащий новые данные. Обновите количества и цены для двух продуктов.
% new quantities and prices for product numbers 5 and 8 % are separated by a semicolon in the cell array data = {10000,5.5;9000,10};
Обновить столбцы quantity и price в inventorytable для продуктов с номерами продуктов, равными 5 и 8. Создание массива ячеек whereclause который содержит два WHERE предложения, по одному для каждого продукта.
tablename = 'inventorytable'; whereclause = {'WHERE productnumber = 5';'WHERE productnumber = 8'}; update(conn,tablename,colnames,data,whereclause)
Повторно импортировать данные и просмотреть обновленное содержимое в inventorytable.
results = fetch(conn,sqlquery); head(results)
ans =
8×4 table
productnumber quantity price inventorydate
_____________ ________ _____ _________________________
1 1700 20 '2014-12-01 08:50:15.000'
2 1200 9 '2014-07-08 22:50:45.000'
3 356 17 '2014-05-14 07:14:28.000'
4 2580 21 '2013-06-08 14:24:33.000'
5 10000 6 '2012-09-14 15:00:25.000'
6 4540 8 '2013-12-25 19:45:00.000'
7 6034 16 '2014-08-06 08:38:00.000'
8 9000 10 '2011-06-18 11:45:35.000'Продукт с номером продукта, равным 5 имеет обновленное количество 10000 единицы и цена, равная 6округляется до ближайшего числа. Продукт с номером продукта, равным 8 имеет обновленное количество 9000 единицы и цена, равная 10.
Закройте подключение к базе данных.
close(conn)
conn - Подключение к базе данныхconnection объектПодключение к базе данных, указанное как ODBC connection объект или JDBC connection объект, созданный с помощью database функция.
tablename - Имя таблицы базы данныхИмя таблицы базы данных, указанное как вектор символов или скаляр строки, обозначающий имя таблицы в базе данных.
Пример: 'employees'
Типы данных: char | string
colnames - Имена столбцов таблицы базы данныхИмена столбцов таблицы базы данных, указанные как массив ячеек из одного или нескольких векторов символов или строковый массив для обозначения столбцов в существующей таблице базы данных tablename.
Пример: {'col1','col2','col3'}
Типы данных: cell | string
data - Обновить данныеОбновление данных, указанных как массив ячеек, числовая матрица, таблица, структура или массив наборов данных.
При подключении к базе данных с использованием драйвера JDBC перед запуском преобразуйте данные обновления в поддерживаемый формат update. Если data содержит даты, время или метки времени MATLAB, используйте следующее форматирование:
Даты должны быть символьными векторами формы yyyy-mm-dd.
Времена должны быть символьными векторами формы HH:MM:SS.
Метки времени должны быть векторами символов формы yyyy-mm-dd HH:MM:SS.FFF.
Параметры настройки базы данных NullNumberWrite и NullStringWrite не применяются к этой функции. Если data содержит null записей и NaNs, преобразовать эти записи в пустое значение ''.
Если data является структурой, то имена полей в структуре должны совпадать colnames.
Если data является таблицей или массивом наборов данных, то имена переменных в таблице или массиве наборов данных должны совпадать colnames.
whereclause - SQL WHERE пунктSQL WHERE предложение, указанное как вектор символов или строковый скаляр для одного условия или массив ячеек из векторов символов или строковый массив для нескольких условий.
Пример: 'WHERE producttable.productnumber = 1'
Типы данных: char | cell | string
Значение AutoCommit свойство в connection объект определяет, update автоматически фиксирует данные в базе данных.
Для просмотра AutoCommit значение, доступ к нему с помощью connection объект; например, conn.AutoCommit.
Для установки AutoCommit значение, используйте соответствующий аргумент пары имя-значение в database функция.
Чтобы зафиксировать данные в базе данных, используйте commit функция или выпуск SQL COMMIT оператор с использованием exec функция.
Для отката данных используйте rollback или выдать SQL ROLLBACK оператор с использованием exec функция.
Вы можете использовать datainsert добавление новых строк вместо замены существующих данных.
Количество SQL для обновления нескольких записей WHERE пункты в whereclause должно соответствовать количеству записей в data.
Если порядок записей в базе данных не является постоянным, то для идентификации записей можно использовать значения имен столбцов.
Если это сообщение об ошибке появляется при открытии таблицы базы данных в режиме редактирования:
[Vendor][ODBC Product Driver] The database engine could not lock table 'TableName' because it is already in use by another person or process.
Затем закройте таблицу и снова запустите update функция.
Повторный запуск той же операции обновления может привести к появлению этого сообщения об ошибке.
??? Error using ==> database.update Error:Commit/Rollback Problems
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.