JDBC
JDBC是万金油终极解决方案。如果其它驱动连不上,那JDBC一定是可以的。
当然,JDBC配置起来稍麻烦,不熟悉JAVA的同学会稍为有点头大;非程序员建议在程序员的陪同下进行;不过JAVA这么流行,再看下本文填下坑,相信基本上都能跑起来。
在连接数据库时,连接类型上选择“HTTP_JDBC”,就是JDBC的连接方式了。
工作原理
大家会看到连接类型名以HTTP开头,数据源格式下拉里面也是http的URL,这表明了JDBC是通过HTTP与EZDML通讯的。
众所皆知JDBC是java应用,用java虚拟机跑的;而咱们EZDML是原生程序,不太方便直接调Java(嗯,JNI是可以的,但我觉得JNI太麻烦,不方便调试);所以EZDML通过HTTP与java虚拟机联系,然后java虚拟机再通过jdbc访问数据库:
连接配置
点连接窗口上的“配置”按钮,会出来这个提示:
点“确定”,弹出JDBC配置窗口:
各项配置说明如下:
1 | @echo off //这个是windows批处理关闭命令回显的,不用管 |
下载JDK和jdbc驱动
点击”运行”,会尝试启动JDBC。你可能需要下载JDK和jdbc驱动。
【注意】有一点要先提一下,HTTP_JDBC是走HTTP协议的,这意味着你不一定要在本机跑,你可以把jdbc目录拷到任一台有jdk的电脑运行,比如在数据库服务器或应用服务器上很可能是有jdk或可以部署jdk的。
EZDML自带了mysql-connector-java-5.1.38.jar和ojdbc6.jar两个jar,仅可以连低版本的mysql和oracle,如果没有你要的,或与你要连的数据库版本不符,则你很可能需要自己下载JDBC驱动。比如我们可以从mvnrepository.com下载所需要的jar包:
如果你机上没有合适的java环境,也会报错,请从网上下载安装java环境(建议安装jdk8):
运行HTTP_JDBC服务
上述配置界面上点”运行“则保存配置并启动HTTP_JDBC服务,启动后会尝试按配置信息连接数据库,不过我机上出师不利报了个错:
嗯,大概是说连接安全设置有问题,需要加个参数,加吧:
加完再跑,结果还是有问题:
考虑到我机上的是mysql8,而EZDML自带的mysql jdbc驱动是5,我猜可能是版本太旧,上网搞个新的吧,并把旧的删除:
还是有问题,前面那个class类名的提示倒不要紧,但后面公钥的错误就过不了了:
看来它一定要加密,把useSSL改成true吧:
再运行,终于成功了:
连接HTTP_JDBC
启动HTTP_JDBC服务后,我们可以看到最后一行日志”EzdmlJdbcHttpServer started at http://localhost:8083/ezdml/ (NO PASSWORD AUTH!!!)“,意思是说服务已经启动成功,在本机8083端口监听,服务路径为/ezdml,且不需要登录密码。
我们可以在浏览器打开http://localhost:8083/ezdml/,服务是有回应的:
回到EZDML,把HTTP服务的URL链接填入数据源地址:
由于HTTP服务没有设置密码,我们就不填写用户名和密码了,直接点”确定“进行连接,连接成功,列出所有表对象:
【注】这里有点问题,出现了重名的表,比如admin有两个,这是因为root权限太大,而HTTP_JDBC服务没把Owner传过来。回头要改下代码。
HTTP服务会打印请求日志:
导入结果:
Win32/Linux/MaxOS
上述演示的是EZDML for win64版的。但java本身就是跨平台虚拟机,在任何平台运行都是一样的效果,因此这里就不再一一举例了。
jdbc目录
在进行JDBC连接配置时,大家会看到最后还有一项“配置文件路径”:
1 | D:\EZDML\jdbc\conf.bat |
我们可以打开这个目录来看看:
显然它是运行了ezjdbc.bat这个批处理:
这个批处理干了以下几件事:
- 设置工作目录到文件所在位置(D:\EZDML\jdbc)
- 运行conf.bat设置各环境变量(嗯,就是我们在连接配置里设置的内容)
- 将lib子目录下的所有jar添加到CLASSPATH环境变量
- 显示配置好的信息
- 调用java运行ezjdbc.jar里的com.ezdml.httpsv.EzHttpServer类,并将所有设置好的参数、环境变量传过去
我们试着双击运行ezjdbc.bat,果然弹出了熟悉的HTTP_JDBC命令行窗口:
没错,EZDML就是运行了这个脚本来启动HTTP_JDBC的。
java源码
JDBC的代码我大概只花了几天时间写,写完自己也不怎么用,所以估计会有一些BUG,不过好消息是源代码已附上了。
java_src.zip里包含了HTTP_JDBC服务的源码,大家如有需要可以自行调试修改。
java源码比较简单,只有5个java文件,以后有空时单独讲一下。
JDBC连接是基于HTTP的,因此建议也可以顺便看下HTTP的介绍。
HTTP
ORACLE
SQL Server
MySQL
PostgreSQL
参见《EZDML连接数据库——PostgreSQL和人大金仓》
SQLite
ODBC
参见《EZDML连接数据库——ODBC》