#matlab
Вопрос:
Я имею дело с проблемой с функцией обновления в Matlab.
conn=database('MySQL','user','password');)
selectquery_select = 'SELECT * FROM inputs WHERE i_read = 0';
data_select = select(conn,selectquery_select);
for j=1:size(data_select)
id_data = data_select(j,1);
id_data = string(id_data.(1));
time_data = data_select(j,4);
time_data = string(time_data.(1));
time_dataform = datetime(time_data,'InputFormat','yyyy-MM-dd HH:mm:ss');
y0=data_select(j,2);
y0 = str2num(string(y0.(1)));
r0=data_select(j,3);
r0 = str2num(string(r0.(1)));
if id_data == "115"
run("C:Users...uu.m")
update(conn,'inputs','i_read',1,'WHERE (ID_code = "115") AND WHERE (i_Time = time_data)');
end
end
В принципе, я беру некоторое значение из базы данных, когда i_read равно 0 (i_read-это логическая переменная в базе данных, которая должна давать 1, если значение уже обработано, и 0, если нет). После считывания значения мы хотим изменить значение i_read в базе данных с 0 на 1. Мы решили использовать функцию обновления, но это привело к следующей ошибке:
Error using database.odbc.connection/update
Too many input arguments.
Error in Patient_Identification (line 57)
update(conn,'inputs','i_read',1,'WHERE (ID_code = "112") AND WHERE (i_Time = ', time_data,')');
Кто — нибудь может помочь нам с этой проблемой? Спасибо.
Комментарии:
1. Вы передаете свое предложение where в качестве нескольких аргументов. Сделайте это одной строкой, а затем передайте ее. Попробуйте создать переменную
whereclause
, которая поможет вам изолировать эту проблему.2. Мы попытались создать переменную whereclause, например whereclause=[‘ГДЕ (ID_code = «112») И ГДЕ (i_Time=’, time_data,’)’]. Но код выдает нам эту ошибку: Ошибка при использовании database.odbc.подключение/обновление (строка 301) Ошибка драйвера ODBC: [Microsoft][Диспетчер драйверов ODBC] Ошибка нелла секвенца делла фунционе. Ошибка в обновлении Patient_Identification (строка 59) (продолжение,»входы»,»i_read»,1,где указано);
3. может быть, это глупый вопрос, но установили ли вы драйвер ODBC ?
4. также заметил , что вы закрываете свою строку после того
i_Time =
, как сделаете ее недействительной, как указал Л. Скотт5. Я решил эту проблему, спасибо