如何使用matlab访问数据库,并且传入带参数的查询语句

如何使用matlab访问数据库,并且传入带参数的查询语句

错误场景:

最近在使用matlab构建基于机器学习的金融数据分析模型,遇到一个查询sqlite数据库的场景,通常使用matlab查询数据库的办法是如下语句:

conn_index = sqlite(index_db,'readonly');
sql_find_max_number_n='select max(overall_index_id) from level2_index_n';
max_number_n=cell2mat(fetch(conn_index,sql_find_max_number_n));

但是当你需要输入查询条件的时候,你可能以为是这么写的:

conn_index = sqlite(index_db,'readonly');
  sql_find_fgroupid_db_file_name=strcat('select fgroupid, db_file_name from level2_index_n where overall_index_id=' ,num2str(row_id));%%%这一句会报错为 sql参数必须是 a row vector of chars or cell array.

 group_id_db_file_name=fetch(conn_index,sql_find_fgroupid_db_file_name);

错误提示

其实这里第二句话就会报错,如下这一句会报错为 sql参数必须是 a row vector of chars or cell array.

错误原因:

因为strcat自动合并后,会给你一个single char column based vector, size 1x74. 匪夷所思,它把所有的每一个字母都当作一个行来实现。但是fetch函数要的是基于行的字符串向量,所以你要做的有两个办法
1. 转置上面的矩阵
2. group_id_db_file_name=group_id_db_file_name'
2. 使用cell array 用中括弧来表示,实际上这个也是matlab推荐的方式。
3. group_id_db_file_name={'select fgroupid, db_file_name from level2_index_n where overall_index_id=',num2str(11)}

猜你喜欢

转载自blog.csdn.net/rodneyzhaonet/article/details/80910496