通过JDBC查询Hive Derby数据库时发生异常

通过JDBC查询Hive Derby数据库时发生异常,jdbc,hive,derby,Jdbc,Hive,Derby,我是Hive的新用户,刚刚开始在项目中使用它。我在使用java连接数据库时遇到问题。其解释如下: 我在我的机器上运行了Hive数据库,该数据库使用嵌入式derby驱动程序创建了一个derbymetastore\u db。现在,我希望通过一个单独的Java程序来查询这个metastore\u db 我遵循了网上可以找到的多种技巧,但仍然无法实现 我的Java文件的快照: String url = "jdbc:derby:metastore_db;create=true"; String user

我是Hive的新用户,刚刚开始在项目中使用它。我在使用java连接数据库时遇到问题。其解释如下:

我在我的机器上运行了Hive数据库,该数据库使用嵌入式derby驱动程序创建了一个derby
metastore\u db
。现在,我希望通过一个单独的Java程序来查询这个
metastore\u db

我遵循了网上可以找到的多种技巧,但仍然无法实现

我的Java文件的快照:

String url = "jdbc:derby:metastore_db;create=true"; 
String username = "APP"; 
String password = "mine"; 
String drivername = "org.apache.derby.jdbc.EmbeddedDriver";

Connection con = DriverManager.getConnection(url,username, password);
Statement stmt = con.createStatement();
res = stmt.executeQuery("describe " + tableName);
运行java文件:

我已将其放置在与metastore_db相同的文件夹中,然后使用以下命令运行它:

java -cp "derby-10.4.2.jar:." ConnectTesting
我得到以下语法异常:

java.sql.SQLException: Syntax error: Encountered "describe" at line 1, column 1.
我已经尝试过的一些事情:

  • url=“jdbc:derby:metastore\u db;create=false”
  • url=“jdbc:derby://localhost:10000/metastore_db";
  • url=“jdbc:derby://localhost:1527/metastore_dbDB"; // 默认情况下,配置单元侦听的端口

    上述两种方法给出的误差如下:

    未找到适合jdbc的驱动程序:derby://localhost:10000/metastore_db

  • url=“jdbc:derby:/metastore\u db”

  • 如果我的配置单元服务器已经在运行,然后从另一个终端执行java文件,它会说:
    “Derby的另一个实例可能已启动数据库”

  • 任何人都可以指出我做错了什么,以及我如何连接到现有的数据库以发出查询。

    这是许多不同的问题。你真正需要回答哪一个问题

    “描述”是由“ij”工具执行的命令;它不是SQL语句。所以要运行“descripe”,您必须从“ij”运行它(或者通过使用RunScript实用程序在应用程序中运行“ij”;您不能直接从Statement.executeQuery()运行它)

    为了使用客户机服务器驱动程序,使用hostname:port语法,您必须(a)在类路径中使用derbyclient.jar而不是derby.jar,并且(b)让网络服务器运行

    而且,您不能在多个应用程序中同时打开同一个Derby(嵌入式)数据库,因此当您的应用程序正在运行时,您不能针对同一个(嵌入式)数据库运行第二个应用程序数据库。如果需要此功能,则需要将所有应用程序切换到使用客户端驱动程序,并运行网络服务器以提供对数据库的多应用程序访问

    您已经运行了Derby教程了吗?它更详细地介绍了这些主题中的大部分: