MATLAB中参数个数可变的SQLite语句
我正在用MATLAB编写GUI并使用。我无法将参数传递给它 命令是MATLAB中参数个数可变的SQLite语句,matlab,sqlite,parameters,Matlab,Sqlite,Parameters,我正在用MATLAB编写GUI并使用。我无法将参数传递给它 命令是mksqlite(['INSERT-in',z',VALUES(?)],data)其中: z='table name',从列表框中选择'table name' 要插入的数据来自inputdlg 问题在于?参数,因为不同的表具有不同的列数。有人知道如何动态地声明? a=get(handles.listbox1,'String'); b=get(handles.listbox1,'Value'); tabela=a{b}; dis
mksqlite(['INSERT-in',z',VALUES(?)],data)代码>其中:
z='table name'
,从列表框中选择'table name'
李>
- 要插入的
数据来自inputdlg
李>
问题在于?
参数,因为不同的表具有不同的列数。有人知道如何动态地声明?
a=get(handles.listbox1,'String');
b=get(handles.listbox1,'Value');
tabela=a{b};
disp(tabela);
mksqlite('param_wrapping',1);
mksqlite('result_type',1);
[结果,colnames]=mksqlite(['SELECT*FROM',tabela])
disp(结果);
e=字段名(结果);
v=尺寸(e);
对于r=1:v
prompt={'Wprowadź'};
dlg_title='Wprowadź';
行数=1;
回答=输入dlg(提示、dlg\u标题、数字行);
imie=答案{1};
disp(imie);
t=答案{1};
数据{r}=t;
disp(数据);
z=a{b};
结束;
mksqlite(['插入',z,'值(?,,,?)',],数据);%// 其思想是,您应该动态创建值(…)
,或者为每个表大小写获取预定义语句
您可以尝试使用字符串
-to-字符串
映射,其中键是表名,值是值
语句。这可以在MATLAB中使用对象来实现。这里有一个例子来说明我的意思:
假设您的表名是table_names={'table1','table2','table3'}代码>,假设这些表分别有2、3和4个字段。因此,SQL命令中相应的值部分将是:SQL_值={'VALUES(?),'VALUES(?),'VALUES(?),'VALUES(?),'VALUES(?),,'VALUES(?)}代码>
现在,我们用这些String
组合构建Map
:
values_map = containers.Map(table_names,sql_values);
构建Map
后,您可以使用从列表框中获得的表名(a
,在代码中),并检索正确的值
语句:
vals_str = values_map(a);
或者,您可以使用逻辑来确定正确的?,
数量,并将其放在值之后的括号中:
switch a
case 'table1'
nVals = 2;
case 'table2'
nVals = 3;
case 'table3'
nVals = 4;
end
vals_str = ['VALUES (' repmat('?,',[1 nVals-1]) '?)'];
注意:您可以在您的案例中保持不同的vals\u str
正确,而无需在运行时生成字符串。我个人不太喜欢这样的版本,原因我无法解释
最后,在mksqlite
中使用vals\u str
:
mksqlite(['INSERT INTO ' z ' ' vals_str], data);