有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何通过jdbc将数据插入配置单元表?

我曾尝试使用jdbc在hive中操作数据。当我使用选择或创建操作时,一切正常。但当我尝试使用insert向表中添加一些行时,如下所示:

String sql = "insert into agg_test_20170508 values (20170508, 100)";
Class.forName(JDBC_Driver);
connection = DriverManager.getConnection(JDBC_String, ID, pwd);
Statement stmt = connection.createStatement();
System.out.println(D_FORMAT.format(new Date()) + " Running:\r\n" + sql);
ResultSet res = stmt.executeQuery(sql);
System.out.println(D_FORMAT.format(new Date()) + " QUERY COMPELET.");

但过了很长一段时间,什么也没有回来。使用jdbc连接到hive时有任何限制吗

我公司的hadoop版本是0.20.2


共 (3) 个答案

  1. # 1 楼答案

    executeQuery()-这通常用于读取数据库的内容。输出将采用ResultSet的形式。通常使用SELECT语句

    executeUpdate()-这通常用于更改数据库。一般情况下,DROP TABLE或DATABASE、INSERT into TABLE、UPDATE TABLE、DELETE from TABLE语句都会用到这一点。输出将采用int的形式。该int值表示受查询影响的行数

    execute()-如果不知道要使用哪种方法执行SQL语句,可以使用此方法。这将返回一个布尔值。TRUE表示结果是ResultSet,FALSE表示其具有int值,int值表示受查询影响的行数

  2. # 2 楼答案

    请使用executeUpdate方法,而不是executeQuery方法

  3. # 3 楼答案

    必须将executeUpdate与插入更新删除一起使用:

    int res = stmt.executeUpdate(sql);
    

    int executeUpdate(String sql): executes an INSERT, UPDATE or DELETE statement and returns an update account indicating number of rows affected (e.g. 1 row inserted, or 2 rows updated, or 0 rows affected).

    ResultSet executeQuery(String sql): executes a SELECT statement and returns a ResultSet object which contains results returned by the query.