从数据库中检索值时,使用editbox更改用户输入时遇到问题。 以下是工作代码。
conn = database('SQL', '', '');
name = input('what is your name: ', 's');
sqlquery = ['select Staff.staffPW from imageProcessing.dbo.Staff '...
'where Staff.staffID = ' '''' name ''''];
curs = exec(conn,sqlquery);
curs = fetch(curs);
curs.Data
close(curs)
close(conn)
但是现在当我使用编辑框更改输入时,出现了问题
function pushbutton1_Callback(hObject, eventdata, handles)
conn = database('SQL', '', '');
name = get(handles.edit1,'String');
sqlquery = ['select Staff.staffPW from imageProcessing.dbo.Staff '...
'where Staff.staffID = ' '''' name ''''];
curs = exec(conn,sqlquery);
curs = fetch(curs);
curs.Data
close(curs)
close(conn)
我可以从工作代码中获取正确的pw,但是来自editbox的输入我什么都没得到。任何人都可以教我如何使它工作?非常感谢!
答案 0 :(得分:0)
当前问题是你的案例中的String
property是一个包含字符串而不只是普通字符串的单元格数组。
MATLAB编辑样式uicontrol
能够显示多行文本。要填充多行文本,在这些情况下,字符串可以作为字符串的单元格数组传递,其中每个元素都位于编辑框的不同行。
control = uicontrol('style', 'edit', ...
'Max', 2, ... % A two-line edit box
'String', {'Row1', 'Row2'});
因此,即使对于单行编辑框,String
属性也可以是字符串或的单元格数组,只是一个字符串。因此,从编辑框中检索值时,请务必在使用之前检查它是否为单元格数组(iscell
)或字符串(ischar
)。
因此,我们可以对您的代码进行调整,我们可以执行以下操作
name = get(handles.edit1, 'String');
% Check to ensure it is a cell array of one string
if iscell(name) && numel(name) == 1
name = name{1};
end
% Disallow non-strings, cell arrays of multiple strings, or empty strings
if ~ischar(name) || isempty(name)
error('A valid string must be supplied!');
end
sqlquery = ['select Staff.staffPW from imageProcessing.dbo.Staff '...
'where Staff.staffID = ' '''' name ''''];