JDBC (Java DataBase Connection) 是经过JAVA访问数据库html
步骤 1 : 为项目导入mysql-jdbc的jar包java
访问MySQL数据库须要用到第三方的类,这些第三方的类,都被压缩在一个叫作Jar的文件里。 为了代码可以使用第三方的类,须要为项目导入mysql的专用Jar包。 一般都会把项目用到的jar包统一放在项目的lib目录下,在本例就会放在 E:\project\j2se\lib 这个位置 而后在eclipse中导入这个jar包mysql
导包步骤: 右键project->property->java build path->libaries->add external jarssql
步骤 2 : 初始化驱动数据库
经过Class.forName("com.mysql.jdbc.Driver"); 初始化驱动类com.mysql.jdbc.Drivereclipse
若是忘记了第一个步骤的导包,就会抛出ClassNotFoundException学习
Class.forName是把这个类加载到JVM中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工做。ui
package jdbc; public class TestJDBC { public static void main(String[] args) { //初始化驱动 try { //驱动类com.mysql.jdbc.Driver //就在 mysql-connector-java-5.0.8-bin.jar中 //若是忘记了第一个步骤的导包,就会抛出ClassNotFoundException Class.forName("com.mysql.jdbc.Driver"); System.out.println("数据库驱动加载成功 !"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 3 : 创建与数据库的链接编码
创建与数据库的Connection链接 这里须要提供: 数据库所处于的ip:127.0.0.1 (本机) 数据库的端口号: 3306 (mysql专用端口号) 数据库名称 how2java 编码方式 UTF-8 帐号 root 密码 adminspa
注: 这一步要成功执行,必须创建在mysql中有数据库how2java的基础上,若是没有,点击查看建立数据库如何进行数据库的建立。
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 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 // 密码 admin Connection 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 block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 4 : 建立Statement
Statement是用于执行SQL语句的,好比增长,删除
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 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 block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 5 : 执行SQL语句
s.execute执行sql语句 执行成功后,用mysql-front进行查看,明确插入成功
执行SQL语句以前要确保数据库how2java中有表hero的存在,若是没有,须要事先建立表
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 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"); 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 block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 6 : 关闭链接
数据库的链接是有限资源,相关操做结束后,养成关闭数据库的好习惯 先关闭Statement 后关闭Connection
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; 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 block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 数据库的链接时有限资源,相关操做结束后,养成关闭数据库的好习惯 // 先关闭Statement if (s != null) try { s.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 后关闭Connection if (c != null) try { c.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
步骤 7 : 使用try-with-resource的方式自动关闭链接
若是以为上一步的关闭链接的方式很麻烦,能够参考关闭流 的方式,使用try-with-resource的方式自动关闭链接,由于Connection和Statement都实现了AutoCloseable接口
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try ( Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin"); Statement s = c.createStatement(); ) { String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")"; s.execute(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
练习: 一次性 插入100条数据
借助循环,和上面学习到的JDBC的知识,向数据库中插入100条数据,并在mysql-front中观察查询结果 答案 :
作一个0-100的for循环,生成不一样的sql语句,而后执行
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try ( Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin"); Statement s = c.createStatement(); ) { for (int i = 0; i < 100; i++) { String sql = "insert into hero values(null," + "'英雄"+i+"'" + "," + 313.0f + "," + 50 + ")"; s.execute(sql); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }