JavaEE学习中,JDBC、DriverManger类、Connection接口、Statement接口、ResultSet接口(java 学习中的小记录)
作者:王可利(Star·星星)
JDBC(Java Data Base Connectivity,java数据库连接)
是Java数据库连接技术的简称,提供连接各种常用数据库的能力。
1.DriverManger类
依据数据库的不同,管理JDBC驱动
2.Connection 接口
负责连接数据库并担任传送数据的任务,如:连接数据库,要有一个通道,那么这个通道就是Connection。
3.Statement 接口
由 Connection 产生、负责执行SQL语句,如:有了通道了,我开个车过去就是Statement,执行SQL语句。
4.ResultSet 接口
负责保存Statement执行后所产生的查询结果,如,开了车过去了,把东西拿回来,那个东西就是ResultSet。
JDBC的工作原理
JDBC API 主要功能:与数据库建立连接、执行SQL语句、处理结果。
JDBC工作原理
1.加载JDBC驱动(Class.forName(驱动类))
2.连接数据库(地址、帐号、密码)Connection
3.获取到对象,执行SQL语句,返回结果。Statement
4.使用完了释放对象 (.close)
下面进行代码对数据库的 增、查 、删、改、crud
实例一代码如下:(增加)
快捷键:快捷导入包:Ctrl + shift + O
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 6 //实例一:纯Java代码 连接数据库 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null; 10 Statement stmt = null;//声明Statement变量 11 12 String sql = "INSERT INTO star_studyone (id,name,sex,age) VALUES ('1', '星星', '男', '12');"; 13 14 //1.加载驱动 15 try { 16 Class.forName("com.mysql.jdbc.Driver");//加载驱动类 17 } catch (Exception e) { 18 } 19 20 //2.获得连接对象 21 try { 22 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy", "root", "123456");//连接到数据库 23 System.out.println("连接成功!"); 24 } catch (Exception e) { 25 26 } 27 28 //3.获取到Statement对象 29 try { 30 stmt = conn.createStatement();//获取到Statement对象 31 stmt.execute(sql);//Statemen对象执行 SQL语句 32 } catch (Exception e) { 33 34 } 35 36 //4.关闭对象 37 //先添加的对象后关闭,后添加的对象先关闭 38 try { 39 stmt.close(); 40 conn.close(); 41 } catch (Exception e) { 42 } 43 } 44 }
实例二代码如下:(查询)
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 4 import java.sql.ResultSet; 5 6 //实例二: 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null; 10 Statement stmt = null;//声明Statement变量 11 ResultSet rs =null; 12 13 String sql = "SELECT *FROM star_studyone"; 14 15 try { 16 //加载驱动 17 Class.forName("com.mysql.jdbc.Driver"); 18 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy","root", "123456"); 19 stmt = conn.createStatement(); 20 rs = stmt.executeQuery(sql);//返回查询 21 22 //遍历rs 23 //rs.next();指针下移 返回的是布尔值 24 25 while (rs.next()) { 26 //在MYSQL数据库中索引从1开始 27 // System.out.println(rs.getInt(1)+"\t"); 28 // System.out.println(rs.getString(2)+"\t"); 29 // System.out.println(rs.getString("sex")+"\t"); 30 // System.out.println(rs.getInt("age")+"\t"); 31 32 System.out.println(rs.getObject(1)+"\t"); 33 System.out.println(rs.getObject(2)+"\t"); 34 System.out.println(rs.getObject("sex")+"\t"); 35 System.out.println(rs.getObject("age")+"\t"); 36 37 } 38 System.out.println("============================="); 39 40 } catch (Exception e) { 41 42 }finally{ 43 //如果他是空,才可以关 44 try { 45 if (null != rs) { 46 rs.close(); 47 } 48 if (null != stmt) { 49 stmt.close(); 50 } 51 if (null != conn) { 52 conn.close(); 53 } 54 55 } catch (Exception e2) { 56 57 } 58 } 59 } 60 }
实例代码三:(改、删除)
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Statement; 5 6 //实例三: 7 public class star { 8 public static void main(String[] args) { 9 Connection conn = null; 10 Statement stmt = null;//声明Statement变量 11 12 //String sql = "UPDATE star_studyone SET name='星星哥哥' WHERE id = '5' ";//SQL改变语句 13 String sql = "DELETE FROM star_studyone WHERE id = '5' ";//SQL删除语句 14 15 try { 16 //加载驱动 17 Class.forName("com.mysql.jdbc.Driver"); 18 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/starstudy","root", "123456"); 19 stmt = conn.createStatement(); 20 stmt.executeUpdate(sql); 21 22 System.out.println("=========成功连接========="); 23 24 } catch (Exception e) { 25 26 }finally{ 27 //如果他是空,才可以关 28 try { 29 if (null != stmt) { 30 stmt.close(); 31 } 32 if (null != conn) { 33 conn.close(); 34 } 35 36 } catch (Exception e2) { 37 38 } 39 } 40 } 41 }
自己犯的错误总结:
1. 导包不要导错。导这类的包 import java.sql.Connection;
2. String url = "jabc:mysql://主机名或地址:端口号/数据库的名称";
如:
String url = "jabc:mysql://localhost:3306/StarXiaoLi";
3. Class.forName("com.mysql.jdbc.Driver"); 复制类名的时候不能有 .class 多出来
4. String sql = "INSERT INTO star_studyOne (id,name,sex,age) VALUES (1,'星星','男',12)";
格式是这样的,字符要有单引号,INSERT INTO 表名(这里直接是属性名字,没有单引号的)VALUES (1,'星星','男',12)";