发现没有 jdbc 的 node.js 实现。我寻思这玩意不就是 tcp 连接么,为啥没人写一个

原描述没太说清,我的意思,db connection 这一类的规范,其他语言为啥没有。找各种 driver 找起来就好麻烦

环境限制条件是 electron + python cli ,能不用 jvm 最好

node 来实现 jdbc ? 我感觉用 php 实现更快一些。

你猜 jdbc 的那个 j 是啥意思?

Java Database Connectivity

哈哈哈哈

jdbc 抽调 node 的 d 再抽调 tcp 的 c 就只剩个 ..

大概率可以用 odbc

j

是 javascript (确信

#2 javascript(逃

Javascript DataBase Connectivity 没问题

jdbc 的 j 难道不是 javascript 么?

jdbc 只是一套规范, 各种驱动实现的只是接口, 内部就是 tcp 连接

#6 感谢老哥,不过感觉 odbc 这玩意是不是特别好用,我跑半天跑不起来

www.npmjs.com/package/mysql
www.npmjs.com/package/sqlite
www.npmjs.com/package/mariadb

你学 node 没学 npm ?

xswl 加油吧新人

你用 ODBC 罢,真的

#14 我主要是想接 hive

#12 是的。我就在想这玩意应该有人来出规范才对

万物皆可 JavaScript 重写

说来其他语言有类似 JDBC 的规范吗

java database connectivity,简称 jdbc

你可能不需要 jdbc

xswl 萌新很可爱

#22 我也是这么想的,我只是想连个 hive 而已

  • hive-driver 卡在 open-session ,包也不维护了
  • npm jdbc 卡在 jni_md.h ,也许是 $JAVA_HOME 的问题,也想到用户的电脑上可能这种问题更多
  • npm odbc 也没有跑起来

我现在的想法是自己打一个 fat jar 然后命令行调用吧

卧槽 哈哈哈

“找各种 driver 找起来就好麻烦”???
cwiki.apache.org/confluence/display/Hive/HiveClient

别的我不知道,c#和 golang 都是有统一的 db connection 规范的

JDBC 全称叫 Java Database Connectivity ,是 Java 语言提供了一套用来访问数据库的 API 规范,具体来讲,可以理解为 java.sql 这个包。

类似的,Python 也有 Python Database API Specification ( peps.python.org/pep-0249/)。

#17 hive 的 jdbc 驱动像一坨屎一样 依赖一堆的包

原因是 JDBC 其实是比“某个数据库的 Driver”更高一层的抽象,试图规范这个语言下的所有 DB Driver 接口。这需要强大的语言掌控力。Java 是个最初由 Sun 推动的商业型语言,所以 JDBC 出现了。

如果某个语言需要,就需要有人牵头搞一个。但是很遗憾,JS/Python 这种社区型语言,你退出某个 Javascript XXX 别人也不买账。你看 npm 上各种包。。。

====

其实 ORM 比 JDBC 封装层次更高,并不是要求各大 DB 遵守,而是反过来去适配各大 DB 的 driver 。ORM 才是更优解。

entity framework 表示很 j

是的,我之前也遇到过这个问题,没找到统一的上层接口。
这样看来 Java 还真适合工程应用。

1

🐔你太煤~ baby

小黑子无处不在

jdbc ,开头的 j 是指的 java 。要想通用点,就用 odbc 吧。

#2 可能是 js, /狗头

#26 感谢老哥,我还真没想到要去找 hive 官网,因为同时在找其他的 db

#30 有道理。

我的原意是,实现本身应该不复杂,就怕有什么骚操作所以其他语言没有类似的东西。

我想其实连接 db 无非就是 host, port, credentials, db 这些参数。然后弄一个连接池,如果是分布式的实现相应的协议。所以想当然以为所有语言都该有了。

fat jar 打出来了,python 的方案也跑通了,再次感谢大家!

#29 是不是那个 thrift 协议的问题

#32 后来咋解决的

#41 没有细看 它会引起各种 jar 包冲突 不过你应该不存在这个问题

SPI 服务提供发现机制

每个语言特性,语法,生态,各不相同,所以一个语言设计实现的库包,较难在别的语言有好的实现或应用

JDBC 其实是个很奇怪的抽象层。一方面它试图填补各个 DB driver 的差异性。但是 SQL 语言本身的差异性它又无法填补,就导致这玩意儿好像有点用,但其实毛用也没有,换个 DB 还得重写程序。毕竟所有语言的 DB driver 一般都能找得到完善的 connection pool 。

所以真要跨数据库写代码还是得上 ORM 。比如 Python SQLAlchemy 。

jdbc 就是 java 搞面向对象搞魔怔了的结果,除了 jdbc 还有 servlet 。