准备工作
打开MySQL服务
[root@hostlzh lzh]# mysqld_safe &
[1] 21768
[root@hostlzh lzh]# 180209 12:55:11 mysqld_safe Logging to '/var/log/mysqld.log'.
180209 12:55:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
新建数据库
注意数据库名,表名,字段名等如果要加引号,在MySQL里加的是反引号。
mysql> CREATE DATABASE IF NOT EXISTS `testJDBC` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| testJDBC |
+--------------------+
4 rows in set (0.02 sec)
新建数据表
mysql> USE testJDBC;
Database changed
mysql> CREATE TABLE `MyUsr`
-> (
-> `id` SMALLINT NOT NULL,
-> `name` CHAR(4) NOT NULL,
-> `age` SMALLINT,
-> PRIMARY KEY(`id`)
-> );
Query OK, 0 rows affected (0.10 sec)
mysql> SHOW TABLES;
+--------------------+
| Tables_in_testJDBC |
+--------------------+
| MyUsr |
+--------------------+
1 row in set (0.00 sec)
插入一些数据
mysql> INSERT INTO `MyUsr`
-> (id,name,age)
-> VALUES
-> (1,'lzh',20),
-> (2,'pikachu',4),
-> (3,'aaa',19);
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 1
确认一下
mysql> SELECT * FROM MyUsr;
+----+------+------+
| id | name | age |
+----+------+------+
| 1 | lzh | 20 |
| 2 | pika | 4 |
| 3 | aaa | 19 |
+----+------+------+
3 rows in set (0.00 sec)
安装MySQL驱动
教材上用的windows系统,把驱动放在jdk的lib目录下的扩展目录(ext目录)之下,但是我的linux下的jdk没有找到ext目录。
[root@hostlzh jdk1.8.0_11]# ls
bin jre release
COPYRIGHT lib src.zip
db LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txt
include man THIRDPARTYLICENSEREADME.txt
javafx-src.zip README.html
[root@hostlzh jdk1.8.0_11]# ls ./lib
ant-javafx.jar ir.idl missioncontrol visualvm
ct.sym javafx-mx.jar orb.idl
dt.jar jconsole.jar sa-jdi.jar
i386 jexec tools.jar
总之先下载下来,/connector/j/
意思就是给JDBC用的驱动,我选择了Platform Independent(平台独立的)tar包。
把下载好的.tar.gz包解压,在文件夹里就能看到jar包,我的是mysql-connector-java-5.1.45-bin.jar
,这个jar包的路径暂时就不要动了。
新建一个工程,右键
,BuildPath
,Add External Archives...
,选择这个jar包确定
,这个jar包就被引用到这个工程里了,驱动就可以用了。
这时工程中也多了一个Referenced Libraries目录:
还有一种方式是去修改CLASSPATH,我怕会影响我的linux系统使用的老版本java环境,暂时还是用前面这种保守的方式吧。
尝试连接
暂时先不去深究,能连上才能用啊。
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
try {
// 要求JVM查找并加载指定的类
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 声明一个sql连接对象
java.sql.Connection con = null;
String uri = "jdbc:mysql://127.0.0.1:3306/testJDBC? useSSL=true";
String user = "root";
String password = "3838438";
try {
// 和指定的数据库建立连接
con = DriverManager.getConnection(uri, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
try {
// 用Statement声明一个SQL语句对象,用createStatement()创建之
java.sql.Statement sql = con.createStatement();
// 对数据库进行查询,返回ResultSet对象
ResultSet rs = sql.executeQuery("SELECT * FROM MyUsr");
// 一行一行查看查询结果
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
int age = rs.getInt(3);
System.out.println(id + " " + name + " " + age);
}
} catch (SQLException e) {
e.printStackTrace();
}
// 最后关闭连接
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
输出
1 lzh 20
2 pika 4
3 aaa 19
这是相当于把数据库和后端查询数据库的程序都放在一台主机上,所以不用考虑网络问题,而且地址只要写本地环回地址127.0.0.1就可以了。