MATLAB中参数个数可变的SQLite语句

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

我正在用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};
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);