我想创建一个结构来存储数据库中的数据。
我创建了一个函数
function result = LoadDataFromDB(query, columnNames)
其中 column names 表示列名列表,例如 {'id', 'year', 'name'...}
执行以下查询后
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
我想填充结构,但还没有弄清楚如何动态访问结构中的字段。
这是应该创建和填充结构的代码片段:
varnamelist = genvarname(columnNames);
result = cell2struct(cell(size(varnamelist(:))), varnamelist(:));
while rs.next()
count=count+1;
for i = 1 : length(columnNames)
fieldname = columnNames(i);
value = char(rs.getString(i));
%result(count).columnNames(i)=char(rs.getString(i));
result(count).(fieldname) = value;
end
end
主要问题是线路
result(count).(fieldname) = value;
下面描述一个问题是来自控制台输出的副本:
K>> result(1)
ans =
a: []
b: []
c: []
K>> result(1).('a')
ans =
[]
K>> fieldname
fieldname =
'a'
从上面的输出中得出结论,命令 result(1).(fieldname) 应该访问字段 'a' 但尝试一下,它会返回以下错误:
K>> result(1).(fieldname)
??? Argument to dynamic structure reference must evaluate to a valid field name.
有谁知道如何动态地填充结构?