图片缩略图

Adodb_tools.

版本1.1.0.0(158 KB) Jaroslaw Tuszynski.
Adodb_tools允许通过ADO OLEDB组件与不同类型的数据库通信。
4.7
14个评分

9下载

更新2014年1月15日

查看版本历史记录

查看许可证

包adodb_toolbox允许通过Microsoft的ADO (ActiveX数据对象)OLEDB组件与不同类型的数据库进行通信。该软件包被设计用于Microsoft SQL Server, Oracle, Microsoft Access, MySQL和其他数据库。

这个包可以连接到十几种不同的数据库类型,执行各种不同的查询类型,并将结果转换为MATLAB Struct数据结构和常规的单元格表。Matlab结构输出使用类似xml_io_tools和csv2struct库使用的格式。支持读写BLOB对象。金宝app

此包可以在其他包中进行研究,修改,定制,重写并在其他包中使用。所有代码都包含并记录。软件分布在BSD许可(包括)下。

引用

雅罗斯瓦夫Tuszynski(2021)。Adodb_tools.(//www.tatmou.com/matlabcentral/fileexchange/29615-adodb_tools),Matlab中央文件交换。检索到

意见及评分(30.

杰米可能

有办法运行。sql脚本文件吗?像数据库工具箱中的executeSQLScript函数一样?

大卫Fardis

嘿,Jaroslaw Tuszynski,就像我在网上使用的格式化SQL数据一样https://sqlformatter.org/

安德鲁·劳伦森

努力治疗。
对于经常访问同一个数据库的情况,adodb_query的一个有用包装器可以是....

sqlquery ='select * from xxx.dbo.xxx'
data=sqlQueryXXX_Function(sqlQuery) or [data, structure]=sqlQueryXXX_Function(sqlQuery)

函数[表,struct] = sqlqueryxxx_function(sqlquery)
% MATLAB版本R2019a
%目的:从指定的SQL数据库中基于给定的SQL查询提取数据
%%
db = adodb_connect('provider = sqloledb;数据源= xxx;初始目录= xxx;用户id = xxx; password = xxx;');
[struct,tablecells] = adodb_query(db,sqlquery);
DB.release;%Access:关闭DB连接
表= cell2table (TableCells);
timeList = fieldnames(struct)';
table.properties.variablenames = field列表;%为表添加标题
结束

svanimisetti

伟大的工具。

Kavitha Guntaka

我的脚本总是在这一行出错:
如果(ado_recordset。国家& & ado_recordset.RecordCount > 0)
记录集。RecordCount没有读取任何值(空),尽管我的数据库显示了数据的存在(在数据库上执行Sql查询)。
你能给我一些建议吗

本杰明Grichting

漂亮而且工作良好的工具!一个问题:MySQL / MariaDB中的JSON字段似乎不可能读出。有一些解决方法吗?
来源:Microsoft游标引擎
说明:多步操作产生错误。检查每个状态值。

伊莱Ashkenazy

Sandeep Kumar Radha Krishnan

Jaroslaw Tuszynski.

@ Darin McCoy:抱歉,我在过去的4-5年里没有使用过这个代码,所以我不知道。

达林本人

我已经有几次错误......有没有办法?

调用错误,分派异常:
来源:Microsoft游标引擎
说明:内存不足。

哈维尔·克鲁兹

很好的工具,工作在Windows 7 64位和Matlab R2011a!!

Karamos

你好,Jaroslaw,你能告诉我如何插入日期到SQLExpress。

我已经尝试了以下,但不工作

sql=(['INSERT INTO ' tablename ' (Bid,DateTime) VALUES ('num2str(variable1) ')”、“char ({datestr(现在,yyyy-mm-dd HH: MM: SS)})
')']);
adodb_query (DB、sql);

谢谢

Jaroslaw Tuszynski.

回复Guillaume:这些功能不使用任何工具箱并依赖于ActiveX Microsoft的ADO OLEDB工具,这些工具应在所有Windows计算机上预装。可能是您在非Windows机器上运行吗?或者也许您的ADO OLEDB工具有一些问题:我对他们不太了解。

guillaume.

感谢您的回复。我理解64位的问题。也许我没有使用正确的字符串,我想这就是我所缺少的。mySQL似乎有很多不同的连接字符串,但似乎没有一个适合我。我想问的另一点是,我需要Matlab数据库工具箱来做这个工作吗?还有一个特定版本的Matlab?
谢谢你!

Jaroslaw Tuszynski.

回复纪尧姆:我已经好几年没有使用这个代码了,所以我所能建议的是:
1)验证字符串格式使用http://www.connectionstrings.com/或其他网站。
2)确保所有组件都是64位或32位。请看我2014年1月15日的评论

guillaume.

您好,我是新的,将MATLAB链接到SQL数据库,我得到了我认为的是初学者错误:

错误使用COM。ADODB_Connection /开放
调用错误,分派异常:
来源:Microsoft OLE DB Provider for ODBC Drivers
描述:[Microsoft] [Gestionnaire de Pilotes Odbc]源De
Données introuvable et nom de pilot non spécifié

当我输入时:
DB =
adodb_connect('server = 192.168.30.147;数据库= ****; UID = ****; pwd = ****;');

谁能帮助我配置我的连接?

谢谢你!

兰德

很好的工具。在某些情况下,我得到以下错误(在mySQL数据库):

错误使用Interface.Microsoft_ActiveX_Data_Objects_6.1_Library._Recordset / GetRows
调用错误,分派异常:
来源:Microsoft游标引擎
说明:多步操作产生错误。检查每个状态值。

adodb_query错误(第77行)
表= ado_recordset.GetRows ';%从记录集中检索数据

我怎么能调试这个想法?

利亚

非常有用的工具。正如Peter建议的那样,对于一个表或多个记录的结构有一个插入是很好的

我就做了一个,因为我需要它。

colnames函数adodb_insert(康涅狄格州,表,数据)
w = whos('data');
colnames_char = strjoin(colnames,',');

开关w.class
例“表”
rdata = table2cell(数据);
例“结构”
rdata = struct2cell(数据);
结束

B = cellfun (@isnumeric rdata (1:));
c = Cellfun(@ num2str,rdata(:,b),'serialOutput',0);
rdata(:,b)= c;

%% MS SQL:插入两个新记录
[m ~] =大小(数据);
对于r = 1:m
write_str = strjoin(rdata(r,:),'''''''');
adodb_query(conn,['插入'tablename'('colnames_char')值(''write_str'');']);
结束

Jaroslaw Tuszynski.

回复布鲁斯:
在升级到64位计算机并安装64位MATLAB之后,我最近遇到了同样的问题。显然我的MS Office是32位的,既不是这个工具箱也不是MATLAB数据库工具箱能够与它工作。我通过卸载32位office重新安装64位版本解决了这个问题。

布鲁斯

有没有人在64位系统上使用Access2010工作?最近从32到64升级,无法连接到我的访问DBS。

布鲁斯

问题解决了...关键词是一种痛苦:-)

布鲁斯

主要是太棒了。但刚刚尝试了一个查询,工作在访问本身,但失败与“错误使用COM。ADODB_Connection /执行
当使用adodb_query(sql)执行时,调用错误,调度异常:未指定错误

有什么办法能找出问题出在哪里吗?

丹金

神奇的工具,简单和快速!

丹尼斯

丹娜

我已经使用这些工具有一段时间了,它们工作得很好。不幸的是,他们刚给了我一台新电脑,现在adodb_connect给我一个错误。它在使用MATLAB2010a的32位Windows XP电脑上运行良好。现在在64位Windows 7机器与MATLAB2010b我得到的错误:
???调用错误,分派异常:
来源:Microsoft OLE DB Provider for ODBC Drivers
说明:[Microsoft][ODBC Driver Manager]没有找到数据源名称,没有默认值
指定的司机

我的连接字符串确实指定正确的数据源和驱动程序(在新机器上安装)。

有什么建议吗?

谢谢

Jaroslaw Tuszynski.

皮特回答:
我正在使用此脚本添加很多(〜60k)的记录来访问DB,并使用Access作为临时内存存储器来获取一些MATLAB代码以使用2GB或RAM的加工运行。我没有注意到任何“极端”的缓慢,但这可能是相对的。

您看到的错误可能是由于MS访问不支持多个查询。金宝app

皮特谢尔勒

这是一个伟大的脚本。然而,当尝试将多个记录发送到accessDB时,速度会非常慢。是否有一种方法可以对多个记录进行插入?
Pref.MultipleQuery = true;不是工作!
sql ='插入xport(accnt,name)值(“pers”,“02”)
INSERT INTO export (ACCNT,Name) VALUES ("Cars","1008")”;
有错误:
???调用错误,分派异常:
资料来源:Microsoft Jet数据库引擎
描述:在SQL语句结尾中缺少分号(;)。

错误在==> adodb_query在54
ado_recordset = ado_connection.Execute (sql);

朱利安

感谢这个有用的贡献——我已经使用ADO类似的方法有一段时间了。但是我发现它在MATLAB R2010b中崩溃了。
您是否在Matlab的后续版本中尝试了工具箱,而不是R2010A?

托尼

伟大的脚本,比matlab提供的数据库工具箱更快。更好的文档很好。

托尼

MATLAB版本兼容性
创建R2010a
与任何版本兼容
平台兼容性
窗户 macOS Linux.

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

ADODB / HTML /