JDBC学习之取得连接
一、JDBC
?
?JDBC(Java Database Connectivity)是SUN公司为了简化和统一对数据库的操作而制定的一种规范,提供了一套完整的与具体数据库无关操作数据库的接口,允许用户操作底层数据库。
?
二、JDBC架构
?
三、Java应用通过JDBC连接数据库(以Mysql为例)
?
? ? ? ?? 1、首先要将JDBC驱动程序加载到内存中
?
? ? ? ? ? ? ? ? ? Java api中提供了一个DriverManager类可以加载驱动程序。
? ? ? ? ? ? ? ? ? 通过DriverManager.registerDriver(Driver driver)即可加载驱动,
? ?但该方法不建议使用,其原因如下:
?
? ? ? ? ? ? ? ? ? ? ? ? ??<1>、该方式加载驱动会导致驱动被注册两次,内存中会产生两个
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Driver对象
? ?<2>、程序依赖于具体数据库的api,替换底层数据库较麻烦
?
? ? ? ? ? ? ? ? ? ? 另一种方式是通过Class.forName("com.mysql.jdbc.Driver"),该种
? ? ? ? ? ? ? 方式只在内存中产生一个驱动对象,而传入的参数也仅依赖一个字符串
? ? ? ? ? ? ? ? ? ? ?程序的灵活性更高。
?
? ? ? ?2、取得一个数据库的连接对象(Connection)
?
? ? ? ? ? ? ? ? ?通过DriverManager.getConnection(String url,String
? ? ? ? ? ? username,String password)方法可获得一个数据库连接对象.
?
? url--------->>数据库URL连接地址(url用于标识数据库的位置,即程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??序要连接的数据库,url的写法:
? jdbc:mysql:[]//localhost:3306/mydb?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? paramName=paramValue)
?
<1>、jdbc:----->协议
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <2>、mysql:[] ---->自协议
?
<3>、localhost:3306---->主机:端口号
?
<4>、mydb---->数据库
?
?<5>、可将username和password添加到url地址中,然后调
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用DriverManager.getConnection(String url)方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 取得一个Connection对象,此时的url写法为:
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jdbc:mysql://localhost:3306/mydb?
? ? ??username="admin"&password="123"
? ? ?
?
? ? ? ? ? ? ? ? ? username------>>数据库用户名
?
? ? ? ? ? ? ? ?? password--------->>数据库连接密码
?
? ? ? ?3、取得一个数据库操作对象(Statement)
?
? ? ? ? ? ? ? ? ? 通过Connection对象的实例调用createStatement()取得一个数据库
? ? ? ? ? ? ? ? ? 操作对象。
?
? ? ? ? ? 4、通过Statement接口中提供的方法向数据库发送Sql语句
?
? ? ? ? ? ? ? ? ? ?executeQuery(String sql)方法用于向数据库发送DQL语句
?
? ? ? ? ? ? ? ? ? ?executeUpdate(String sql)方法用于向数据库发送DML语句
?
? ? ? ? ? ? 5、释放数据库资源
?
? ? ? ? ? ? ? 完成各种操作后要将数据库资源释放,即Connection、Statement、
? ? ? ResultSet等关闭
?
? ? ? ? 通过Java程序连接mysql数据库,取得一个数据库连接对象:
?
?
package com.itheima.jdbc;import java.sql.Connection;import java.sql.DriverManager;/** * 此类用于取得一个数据库连接 * * @author dongjiejun * */public class JDBCDemo01 {/** * 该变量表示数据库驱动 */private static final String DBDRIVER = "com.mysql.jdbc.Driver";/** * 该变量表示数据库的URL地址 */private static final String DBURL = "jdbc:mysql://localhost:3306/mydb";/** * 该变量表示数据库的用户名 */private static final String DBUSER = "root";/** * 该变量表示数据库的连接密码 */private static final String DBPASS = "admin";public static void main(String[] args) throws Exception {// 加载数据库驱动程序Class.forName(DBDRIVER);// 取得数据库连接Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);System.out.println(conn);if (conn != null) {conn.close();}}}?
? ? 输出结果:com.mysql.jdbc.Connection@10b9d04
?
?
? ? ? ? ? ??