MySQL 学习
目录
MySQL可以使用jdbc进行编程。
进行jdbc编程的时候,需要另外下载组件Connector/J
,如果你是在MySQL官网下载的数据库的话,现在8.0版本,有一个MySQL Install,在其中你可以选择相对应的connector从而利用以外的语言进行访问数据库。
在idea中,需要在该项目的Project Structure
中的Modules
添加Connector/J
相对应的包,否则不能够访问。
我的机器上安装的是MySQL 8.0的版本,所以与以往可能有大部分不一样
接下来,我们创建一个test.java
,开始今天的jdbc对数据库的访问
Class.forName()
- Class.forName()
首先得明白Class
这个类
Class
类
是Java中的反射中心,可以通过其中的forName()
方法从而获取类Class
对象的引用。
Class.forName()
方法主要功能是返回一个类,作用是要求 JVM 查找并加载指定的类,也就是说, JVM 会执行该类的静态代码段也即static
修饰的部分。而在加载数据库驱动的时候,只能使用Class.forName()
方法去加载该驱动
在MySQL8.0中,该驱动在"com.mysql.cj.jdbc.Driver"
中,需要注册该驱动
使用语句注册驱动
Class.forName("com.mysql.cj.jdbc.Driver")
返回顶部
数据库URL
在连接数据库时,我们必须使用各种与数据库类型相关的参数,比如主机名、端口号和数据库名等
比如jdbc:mysql://local:3306/test?useSSL=false&serverTimezone=UTC
,可以分成四个部分
jdbc:mysql://
local:3306/
test?
useSSL=false&serverTimezone=UTC
我不知道这样分得对不对,反正我这样分了我能理解.....
第一部分是JDBC的特定的语法,其本体是这样的jdbc:subprotocol:other stuff
subprotocol用于选择连接到数据库的具体程序。other stuff参数的格式随所使用的subprotocol不同而不同,大可以访问数据库供应商提供的相对一个的文档。
数据库的url明白之后,接下来就是注册驱动器类了
返回顶部
注册驱动器类
通过DriverManager
注册驱动器类
- 在Java程序中加载驱动器类
Class.forName("com.mysql.cj.jdbc.Driver");
- 设置
jdbc.drivers
属性
连接到数据库
Connection
与特定的数据库进行连接,连接上下文的SQL语句并返回结果Statement
与数据库进行连接之后,用该连接发送SQL语句ResultSet
使用SQL语句之后查询的东西,返回结果集到ResultSet中,
由于ResultSet中不支持滚动去读,只能使用其中的方法next()
去一行一行地进行读取
然后接下来就可以使用jdbc和数据库进行连接了,可以使用了。
返回顶部
下面是一个例子:
import java.sql.*;
public class TestForMySQL {
final static String JDBC_Driver="com.mysql.cj.jdbc.Driver";
final static String url= "jdbc:mysql:"+/*jdbc:指定特定的数据库*/
"//localhost:3306/"/**/
+"test"/*数据库名称*/
+"?useSSL=false&serverTimezone=UTC";/*固定格式*/
final static String user="root";
final static String passwd="12345678";
public static void main(String[]args){
Connection connection=null;
Statement statement=null;
try{
Class.forName(JDBC_Driver);//注册驱动
connection= DriverManager.getConnection(url,user,passwd);//连接端口,加上用户名密码
statement=connection.createStatement();
String sqlUse="show databases";
String sqlCmd="SELECT * FROM words WHERE id>=1 and id<100";//sql语句
ResultSet resultSet=statement.executeQuery(sqlCmd);//使用语句进行查询
while(resultSet.next()) {
int id = resultSet.getInt("id");
String word = resultSet.getString("word");
String explains = resultSet.getString("explains");
System.out.println(id + " " + word + " " + explains);
}
//关闭流
statement.close();
resultSet.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
finally {
try {
if (statement != null)
statement.close();
}catch (SQLException e) {
e.printStackTrace();
}
try{
if(connection!=null)
connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}
System.out.println("结束");
}
}