写在前面
虽然在实际开发中关于这些操作都不会让我们去写,但是掌握这代码的逻辑编写对我们使用框架有一定的帮助。
学习JDBC:请关注专栏——JDBC学习——内容详细
相关文章:
JDBC总述JDBC完成对数据库数据操作(增,删,改,查)
JDBC数据库事务
JDBC使用数据库连接池连接数据库(DBCP,C3P0,Druid)
Apache-DBUtils实现CRUD操作
欢迎光临我的主页:Java笔记本
声明:以下方式是循序渐进的,都是在前一种方式的完善的过程,对前一种方式的完善。前四种了解过程,重点掌握最后一种。
获取数据库连接要素:
要素一:Driver接口实现类:java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。
- 加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名
Class.forName(“com.mysql.jdbc.Driver”);
注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序
使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动要素二:URL
- 三部分组成,各部分间用冒号分隔。
- jdbc:子协议:子名称
- 协议:JDBC URL中的协议总是jdbc
- 子协议:子协议用于标识一个数据库驱动程序
- 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
要素三:用户名和密码
1.获取连接,使用Driver接口
2.将用户名与密码封装
3.调用connect方法来返回一个Connection对象,这是一个连接
public class Test01 {
@Test
public void textConnection() throws SQLException {
//1.获取连接,使用Driver接口
Driver driver=new com.mysql.jdbc.Driver();//需要用一个Mysql具体的driver的实现类
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";//定位要连接哪一个数据库,?后面的内容,是编码转换异常时加的
//2.将用户名与密码封装
Properties info=new Properties();
info.setProperty("user","root");
info.setProperty("password","123456");
//3.调用connect方法来返回一个Connection对象,这是一个连接
Connection connect = driver.connect(url, info);
System.out.println(connect);//检查是否连接成功
}
}
1.代码当中尽量不要出现过多的第三方API,使代码具有更好的可移植性。
运用反射,反射可以很好的将第三方接口包装起来,可以实现动态的获取。
public void Test02() throws Exception{
//1.获取Driver的实现类对象(用反射):动态的获取
Class clazz= Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
Properties info=new Properties();
info.setProperty("user","root");
info.setProperty("password","123456");
Connection connection= driver.connect(url,info);
System.out.println(connection);
}
}
使用DriverManager来替换Driver,有三个参数的方法,Connection cc = DriverManager.getConnection(url, user, password);
public class Test03 {
@Test
public void three() throws Exception {
//1.获取基本信息
Class clazz= Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
String user="root";
String password="123456";
//2.注册驱动
DriverManager.registerDriver(driver);
//3获取连接
Connection cc = DriverManager.getConnection(url, user, password);
System.out.println(cc);
}
}
省去了驱动的注册,只需将类加载到内存中,加载到内存中有个静态方法,在类加载的适合就完成了驱动的注册
public class Text04 {
@Test
public void text() throws Exception {
//1.获取基本信息
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
String user="root";
String password="123456";
//2.获取基本类的实现对象 注册驱动
Class.forName("com.mysql.jdbc.Driver");//连接mysql数据库时,这行也可以注释掉,Oracle不行
//3.获取连接
Connection cc = DriverManager.getConnection(url, user, password);
System.out.println(cc);
}
}
将信息封装到配置文件中,通过读取配置文件的方式
public class Text05 {
@Test
public void Text5() throws Exception{
//1.读取配置文件中的基本信息
InputStream is = Text05.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(is);
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
String driverClass = properties.getProperty("driverClass");
//2.加载驱动
Class.forName(driverClass);
//3.获取连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
}
1.
解决:
数据库未连接
2.
编码集的问题
解决:
连接数据库只是jdbc学习过程中的一个基础。后面我会出超详细的教程。增删改查。