版本:

Java 17

MySQL 8.0

mysql-connector-java-8.0.28

(注意mysql-connector版本和MySQL版本要匹配~) 


目录

Java连接数据库分为3步

1.下载驱动,然后在Eclipse的project中添加驱动的jar包

2.在Eclipse中建立一个GetDBConnection类,用于加载驱动并连接数据库

① 注册jdbc驱动

②建立连接

③catch exception

3.创建用于执行SQL语句的类



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) {}
			}
}

最后的输出就是:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐