Замените данные в таблице базы данных с данными MATLAB
update(conn,tablename,colnames,data,whereclause)
Соединитесь с базой данных 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
Соединение с базой данных, заданное как объект connection
, создается с функцией database
.
tablename
— Имя таблицы базы данныхИмя таблицы базы данных, заданное как вектор символов или скаляр строки обозначение имени таблицы в базе данных.
Пример: 'employees'
Типы данных: char | string
colnames
— Имена столбцов таблицы базы данныхИмена столбцов таблицы базы данных, заданные как массив ячеек одного или нескольких векторов символов или массива строк, чтобы обозначить столбцы в существующей таблице базы данных tablename
.
Пример: {'col1','col2','col3'}
Типы данных: cell
| string
данные
Обновите данныеОбновите данные, заданные как массив ячеек, числовая матрица, таблица, структура или массив набора данных.
Если вы соединяетесь с базой данных с помощью драйвера JDBC, преобразовываете данные об обновлении в поддерживаемый формат прежде, чем запустить update
. Если data
содержит даты MATLAB, времена или метки времени, используют это форматирование:
Даты должны быть векторами символов формы yyyy-mm-dd
.
Времена должны быть векторами символов формы HH:MM:SS
.
Метки времени должны быть векторами символов формы yyyy-mm-dd HH:MM:SS.FFF
.
Настройки NullNumberWrite
и NullStringWrite
базы данных preference не применяются к этой функции. Если data
содержит записи null
и NaN
s, преобразуйте эти записи в пустое значение ''
.
Если 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.