学习目标:
Java使用JDBC步骤
学习内容:
1.为项目导入mysql-jdbc的jar包
2.初始化驱动
3.建立与数据库的连接
4.创建Statement
5.执行SQL语句
6.关闭连接
7.使用try-with-resourced的方式自动关闭连接
知识详解:
JAVA使用JDBC步骤:
1.为项目导入mysql-jdbc的jar包
2.初始化驱动
3.建立与数据库的连接
4.创建Statement
5.执行SQL语句
6.关闭连接
1.为项目导入mysql-jdbc的jar包
访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。
为了代码能够使用第三方的类,需要为项目导入mysql的专用Jar包。
通常都会把项目用到的jar包统一放在项目的lib目录下。
eclipse导包过程:右键project->property->java build path->libaries->add external jars
IDEA导包过程:File->project structure->Libaries->±>xxx.jar->Apply
2.初始化驱动
通过*Class.forName(“com.mysql.jdbc.Driver”);*初始化驱动类
com.mysql.jdbc.Driver
就在 mysql-connector-java-5.0.8-bin.jar中
如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName
是把这个类加载到JVM中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工作。
public class TestJDBC {public static void main(String[] args) {//初始化驱动try {//驱动类com.mysql.jdbc.Driver//就在 mysql-connector-java-5.0.8-bin.jar中//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundExceptionClass.forName("com.mysql.jdbc.Driver");System.out.println("数据库驱动加载成功 !");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
3.建立与数据库的连接
建立与数据库的Connection连接
这里需要提供:
数据库所处于的ip:127.0.0.1 (本机)
数据库的端口号: 3306 (mysql专用端口号)
数据库名称 how2java
编码方式 UTF-8
账号 root
密码 admin
Connection c = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8”,“root”, “admin”);
public class TestJDBC {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");// 建立与数据库的Connection连接// 这里需要提供:// 数据库所处于的ip:127.0.0.1 (本机)// 数据库的端口号: 3306 (mysql专用端口号)// 数据库名称 how2java// 编码方式 UTF-8// 账号 root// 密码 adminConnection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");System.out.println("连接成功,获取连接对象: " + c);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
mysql配置
4.创建Statement
Statement是用于执行SQL语句的
注意不要加错包
import java.sql.Statement;
public class TestJDBC {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");// 注意:使用的是 java.sql.Statement// 不要不小心使用到: com.mysql.jdbc.Statement;Statement s = c.createStatement();System.out.println("获取 Statement对象: " + s);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
5.执行SQL语句
基本数据库操作语句:
插入
insert into 表 values (?, '?', ?, ?)
查询
select *|属性 from 表名
修改
update 表名 set hp = 818 where id = 1
删除
delete from 表名 where id = 1
s.execute执行sql语句
执行成功后,用mysql-front或者Navicat进行查看,明确插入成功
执行前要明确数据库中有这个表
public class TestJDBC {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");Statement s = c.createStatement();// 准备sql语句// 注意: 字符串要用单引号'String sql = "insert into hero values(null,"+"'提莫'"+","+313.0f+","+50+")";s.execute(sql);System.out.println("执行插入语句成功");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
6.关闭连接
数据库的连接是有限资源,相关操作结束后,养成关闭数据库的好习惯
先关闭Statement
后关闭Connection
public class TestJDBC {public static void main(String[] args) {Connection c = null;Statement s = null;try {Class.forName("com.mysql.jdbc.Driver");c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root","admin");s = c.createStatement();String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";s.execute(sql);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {// 数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯// 先关闭Statementif (s != null)try {s.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 后关闭Connectionif (c != null)try {c.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}