一、 实验目的
1)理解 4 种数据库(MySQL、HBase、Redis 和 MongDB)的概念及不同点。
2)熟练使用 4 种数据库操作常用的 shell 命令。
3)熟悉 4 种数据库操作常用的 Java API。
二、 实验平台
1)操作系统:Linux(Ubuntu18.04); 2)Hadoop 版本:2.9.0;
3)MySQL 版本:5.7.28;
4)HBase 版本:1.2.6;
5)Redis 版本:4.0.8;
6)MongDB 版本:3.2.21;
7)JDK 版本:1.8;
8)Java IDE:Eclipse 3.8。
三、 实验内容
1、MySQL 数据库操作
import java.sql.*;
//mysql shell:
//mysql -u root -p 123456
//use Student
//drop table Student
//select * from Student
//insert into Student values ("hhh","12","23","31");
public class mysqltest {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/Student?serverTimezone=UTC";
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName(JDBC_DRIVER);
// 打开连接
System.out.println("连接数据库");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
// 删除表
stmt.executeUpdate("DROP TABLE Student");
// 创建表
System.out.println("创建表");
if (0 == stmt.executeUpdate(
"CREATE TABLE Student(name varchar(10) not null,English int(4),Math int(4),Computer int(4))")) {
System.out.println("创建表成功");
} else {
System.out.println("创建表失败");
}
// 插入一行数据 Name:scofield English:45 Math:89 Computer:100
stmt.executeUpdate("INSERT INTO Student VALUES('scofield',45,89,100)");
// 获取 scofield 的 English 成绩信息
ResultSet rs = stmt.executeQuery("select English from Student where Name='scofield'");
while (rs.next()) {
int en_score = rs.getInt("English");
System.out.println(en_score);
}
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、HBase 数据库操作
见大数据实验一:大数据系统基本实验(第三部分:熟悉常用的 HBase 操作)
3、Redis 数据库操作
import redis.clients.jedis.Jedis;
//redis shell
//redis-cli
//ping
//hgetall "Student.scofield"
public class redistest {
public static void main(String[] args) {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
// 查看服务是否运行
System.out.println("服务正在运行: " + jedis.ping());
// 添加数据
Map<String, String> map = new HashMap<String, String>();
map.put("English", "45");
map.put("Math", "89");
map.put("Computer", "100");
jedis.hmset("Student.scofield", map);
// 获取 scofield 的 English 成绩信息
List<String> rsmap = jedis.hmget("Student.scofield", "English");
System.out.println(rsmap);
}
}
4、MongDB 数据库操作
import static org.junit.Assert.fail;
import java.net.UnknownHostException;
import com.mongodb.*;
import com.mongodb.client.model.Filters;
import java.util.*;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
//mongo shell
//mongo
//use Student
//db.Student.find()
public class mongdbtest {
public static void main(String[] args) throws UnknownHostException {
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("Student");
DBCollection collection = db.getCollection("Student");
// 添加数据
BasicDBObject bdo = new BasicDBObject();
bdo.put("name", "scofield");
List score=new ArrayList();
score.add(BasicDBObjectBuilder.start().add("English",45).add("Math", 89).add("Computer", 100).get());
bdo.put("score", score);
collection.insert(bdo);
//获取 scofield 的所有成绩信息(只显示 score 列)
BasicDBObject query=new BasicDBObject();
query.put("_id",false);
query.put("name", false);
System.out.println(collection.findOne(new BasicDBObject("name","scofield"),query));
}
}
本内容为合法授权发布,文章内容为作者独立观点,不代表开发云立场,未经允许不得转载。