版本:
Java 17
MySQL 8.0
mysql-connector-java-8.0.28
(注意mysql-connector版本和MySQL版本要匹配~)
目录
1.下载驱动,然后在Eclipse的project中添加驱动的jar包
2.在Eclipse中建立一个GetDBConnection类,用于加载驱动并连接数据库
Java连接数据库分为3步
1.下载驱动,然后在Eclipse的project中添加驱动的jar包
电脑里安装了MySQL、JDK、Eclipse还不够,只有安装了相应的JDBC-MySQL数据库连接器(即数据库驱动), Java才能访问MySQL数据库服务器上的数据库。
先登录下面的网址,下载JDBC-MySQL数据库连接器。
MySQL :: Download Connector/Jhttps://dev.mysql.com/downloads/connector/j/在select operating system中选择platform independent, 下载zip。
mysql-connector-java-8.0.28,即我们需要的数据库驱动。(目前版本已经更新至8.0.29)
下载完成后,打开cmd, 在cmd里输入 java -cp mysql-connector-java-8.0.28.jar, 检验是否安装成功。
安装成功后,在eclipse新建一个project,右键project, 选择BuildPath -> Configure Build Path-> libraries ->classpath->点击右边的add external jars->找到mysql-connector-java-8.0.28.jar添加。
添加完后是下图这样子滴~
project里多了个referenced libraries~
2.在Eclipse中建立一个GetDBConnection类,用于加载驱动并连接数据库
在你的project里创建一个GetDBConnection类,数据库公共操作类。 公共类可以减少代码的重复,要用的时候直接调用。
简单来说,就是你把加载驱动和连接数据库的代码模板放到公共类里,用的时候调用即可。
package 查询2;
import java.sql.*;
public class GetDBConnection {
public static Connection connectDB(String DBname, String userid, String p) {
Connection con =null;
String driver = "com.mysql.cj.jdbc.Driver";//jdbc驱动
String uri= "jdbc:mysql://localhost:3306/"+DBname
+"?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";
try {
Class.forName(driver);//①注册驱动
con = DriverManager.getConnection(uri,userid,p);//②建立连接
if(!con.isClosed()) {
System.out.println("数据库连接成功");
}
}catch(ClassNotFoundException e) {
System.out.println("数据库驱动未安装");
//即com.mysql.cj.jdbc里的Driver.class没安装
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
return con;
}}
这个类里的代码是干嘛用的呢?
下面来解析一下这些代码的具体的用途。
① 注册jdbc驱动
String driver = "com.mysql.cj.jdbc.Driver";
/**MySQL数据库驱动程序是被封装com.mysql.cj.jdbc包的Driver类中。
Driver类不是java运行环境类库中的类,而是在数据库连接器中,即在mysql-connector-java-8.0.28.jar中。**/
Class.forName(driver);
//注册驱动.
②建立连接
Connection con =null;
String uri= "jdbc:mysql://localhost:3306/"+DBname
+"?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";
con = DriverManager.getConnection(uri,userid,p);//②建立连接
if(!con.isClosed()) {
System.out.println("数据库连接成功");
}
解析String uri的组成部分:
“jdbc:mysql://localhost:3306/"
/** 电脑的ip地址和MySQL的端口.
可以通过在cmd中执行 ipconfig 来获得本机ip地址.
在没更改配置的情况下,MySQL占用的端口是3306。
注意:有的人使用本机的ip地址会报错(比如我 -_-||),遇到这种情况可以将ip地址改为localhost **/
DBname
// 要连接的数据库的名字
"?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
//useUnicode=true&characterEncoding=UTF-8 这两部分是用于指定客户端和服务端之间的编码转换
(如果数据表的记录中有汉字,就必须要添加characterEncoding=utf8)
//mysql的版本5.7之后的版本必须要加useSSL=false
//serverTimezone=UTC 设置时区的,可以设成别的~
建立连接的方法:
Connection con = DriverManager.getConnection(uri,userid,p);
//这三个参数分别是——你要用的数据库名,你的MySQL用户名,你的MySQL密码
③catch exception
这部分不多说了。
3.创建用于执行SQL语句的类
完成以上步骤后,终于可以创建一个操作数据库的类啦!
我数据库中的student表的记录如下:
我现在想要查询student表中名字是“赵”的同学。
所以我在eclipse的project中创建一个类,先调用公共类连接数据库,然后执行sql语句操作,最后关闭。
具体代码和解释如下:
package 查询7;
import java.sql.*;
import 查询2.GetDBConnection; //数据库连接代码封装在GetDBConnection中
public class Eg1 {
public static void main(String[]args) {
Connection dbcon; //连接对象dbcon
Statement sql;
ResultSet rs;
/**1、先和MySQL建立连接**/
dbcon = GetDBConnection.connectDB("你的数据库名字","你的MySQL用户名","你的MySQL密码");
if (dbcon==null)
System.out.println("连接失败");
/**2、再写下你想要执行的语句,sqlstat是想要执行的语句。
* 这个例子是从student表中查询名字是“赵”的同学**/
String sqlstat = "select*from student where sname ='赵'";
try{
/**3、然后让连接对象dbcon调用createstatement方法创建Statement对象sql,
用于将SQL语句发送至数据库。**/
sql=dbcon.createStatement();
/**4、语句发送到数据库之后还要执行,Statement对象sql就负责调用executeQuery()执行
* 执行后会返回一个ResultSet对象rs**/
rs=sql.executeQuery(sqlstat);
/**5、然后就是要获取ResultSet的内容了
* 先用rs.next()使得行标指向下一行, 再用rs.get(col)获取当前行的第col列属性*/
while(rs.next()) {
int sid = rs.getInt(1); //表格第二列的列名是sid, int型
String sname= rs.getString(2);//第二列
int sage= rs.getInt(3);//第三列
System.out.println("sid:"+sid+"\t"+"sname:"+sname
+"\t"+"sage:"+sage+"\t");
}
/**6、关闭连接**/
dbcon.close();
}catch(SQLException e) {}
}
}
最后的输出就是: