一、导入Hive依赖
在Idea中打开需要连接Hive的Maven项目,找到pom.xml文件,在其中添加以下依赖:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.3.7</version>
</dependency>
添加完依赖后,Maven会自动下载所需的JAR包。
二、编写Java代码
在Idea中创建一个Java类,输入以下代码:
import java.sql.*;
public class HiveConnector {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
private static String url = "jdbc:hive2://localhost:10000/default";
private static String user = "";
private static String password = "";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employee");
while (rs.next()) {
System.out.println(rs.getString(1) + "," + rs.getString(2) + "," + rs.getString(3));
}
rs.close();
stmt.close();
conn.close();
}
}
在以上代码中,driverName、url、user、password分别代表Hive的驱动名、连接的地址、用户名、密码。可以根据实际情况进行修改。
主要代码部分是执行一个SELECT语句,将结果遍历并输出。
三、运行程序
在Idea中,使用快捷键Shift + F10 或者点击Run按钮即可运行程序。
如果一切配置正确,程序将会输出查询结果。
四、如何避免SQL注入攻击
避免SQL注入攻击是开发过程中必须要注意的问题,以下是几种常见的方法:
1、使用预编译语句
PreparedStatement ps = conn.prepareStatement("SELECT * FROM employee WHERE name = ?");
ps.setString(1, "Tom");
ResultSet rs = ps.executeQuery();
在使用预编译语句时,要使用setXXX()方法来设置参数,其中XXX是参数类型,例如setString()、setInt()等。
2、使用参数化查询
Statement stmt = conn.createStatement();
String name = "Tom";
String sql = "SELECT * FROM employee WHERE name='" + name + "'";
stmt.executeQuery(sql);
使用参数化查询时,将需要查询的参数名用占位符替换,例如"SELECT * FROM employee WHERE name=?",然后使用setXXX()方法将参数设置进去。
五、总结
通过以上步骤,我们可以成功连接Hive,并执行SELECT语句,获取查询结果。同时,我们也要注意避免SQL注入攻击的问题。