小智 14

要在没有数据库工具箱的情况下从matlab连接到postgres,请执行以下操作:

% Add jar file to classpath (ensure it is present in your current dir)
javaclasspath('postgresql-9.0-801.jdbc4.jar');

% Username and password you chose when installing postgres
props=java.util.Properties;
props.setProperty('user', '<your_postgres_username>');
props.setProperty('password', '<your_postgres_password>');

% Create the database connection (port 5432 is the default postgres chooses
% on installation)
driver=org.postgresql.Driver;
url = 'jdbc:postgresql://<yourhost>:<yourport>\<yourdb>';
conn=driver.connect(url, props);

% A test query
sql='select * from <table>'; % Gets all records
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();

% Read the results into an array of result structs
count=0;
result=struct;
while rs.next()
    count=count+1;
    result(count).var1=char(rs.getString(2));
    result(count).var2=char(rs.getString(3));
    ...
end
Run Code Online (Sandbox Code Playgroud)

  • 根据我的经验,URL应该是:url ='jdbc:postgresql:// <yourhost>:<yourport>/<yourdb>'; (`<yourport>`和`<yourdb>`之间的反斜杠应该是正斜杠).这是在同一台Windows 7计算机上运行Matlab和PostgreSQL服务器. (6认同)

And*_*nke 6

作为一般解决方案,您可以直接使用JDBC.Modern Matlabs都嵌入了JVM.在Matlab中的Java CLASSPATH上获取Postgresql JDBC驱动程序JAR文件,您可以构造JDBC连接和语句对象.请参阅"help javaclasspath".

有几个陷阱.在Matlab中动态类路径上从JAR自动注册JDBC驱动程序类似乎有点古怪,可能是因为它使用单独的URL类加载器而核心JDBC类在系统类加载器中.因此,您可能需要显式构造JDBC驱动程序类的实例并将它们传递给JDBC方法,而不是使用您在所有JDBC教程中看到的隐式驱动程序构造.此外,使用Matlab进行的每个Java方法调用都会产生性能开销,如果您在Matlab代码中循环结果集游标,则会变得昂贵.在Java中编写一个薄的包装层是值得的,它将JDBC的迭代接口包装在面向块的Matlab风格的接口中,读取结果集并用Java在数组中缓冲它们,并将整个数组传递回Matlab.

您也可以使用ODBC,但这需要编写与ODBC链接或使用ADO的MEX文件.更难,更便携.

编辑:如果通过使用自定义classpath.txt在静态Java类路径上获取JAR,则可以使自动驱动程序注册工作正常工作.