JDBC

来源:互联网 发布:软件产品质量控制 编辑:程序博客网 时间:2024/06/05 21:06

一、概念


JDBC(Java Data Base Connectivity)数据库连接是一种用于执行SQL语句的Java的API函数类库,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。通俗的说就是定义一个接口使得不同的数据库通过不同的实现类实现接口,连接程序。


二、JDBC连接驱动


如下图:JDBC是接口由Java提供,驱动是接口的实现由数据库厂商提供,用来连接本公司的数据库。


  


具体操作就是导入驱动jar包。详见《Jar包导入导出及使用》


三、连接流程


1.注册驱动


JDBC规范定义驱动接口:java.sql.Driver,MySql实现接口的实现类:com.mysql.jdbc.Driver

DriverManager工具类:提供注册驱动的方法registerDriver(),方法的参数是接口java.sql.Driver


Class.forName():加载一个使用字符串描述的驱动类,也就是实现类,加载到内存中,类中的静态方法自动执行


2.连接数据库


连接方法:DriverManager.getConnection(url,username,password)

url:数据库位置=jdbc : 数据库类型(mysql) : //(IP地址:端口号/数据库名称)

username:数据库用户名

password:数据库密码


3.获得语句执行平台


Statement stat=con.createStatement();


4.执行SQL语句


int executeUpdate(String sql):执行insert update delete语句

ResultSet executeQuery(String sql):执行select语句

ResultSet executeQuery(String sql):执行select返回true,其他返回false


5.处理结果集


若执行insert update delete语句则不需处理

若执行select则处理返回的ResultSet集合

rs.next():指向某行

rs.getInt(1):获取某行第一列的数据


6.关闭数据库释放资源,先开的后关闭


rs.close():关闭结果集

stat.close():关闭执行平台

con.close():关闭数据库


例子:查询数据


public class JDBCQuery {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动程序Class.forName("com.mysql.jdbc.Driver");//2.连接数据库Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/day28","root","123456");//3.获得SQL执行对象Statement stat=con.createStatement();//4.执行SQL语句String sql="select * from sort";ResultSet rs=stat.executeQuery(sql);//5.处理执行结果while(rs.next()){System.out.println(rs.getInt("sid")+" "+rs.getString("sname")+" "+rs.getDouble("sprice")+" "+rs.getString("sdesc"));}//6.关闭数据库rs.close();con.close();}}


连接流程如下:


          


四、PreparedStatement预处理对象


SQL 语句被预编译并存储在 PreparedStatement 对象中,给对象进行赋值,执行可执行对象,然后可以使用此对象多次高效地执行该语句。


只是第三四步不同,查询例子修改:


        //3.获得语句执行平台//?表示未知对象String sql="select * from sort where sname=?";//使用预处理对象,将sql传入PreparedStatement pds=con.prepareStatement(sql);//给 ? 进行赋值pds.setString(1, "你好");//4.直接执行预处理对象,对象里已经包含了sql语句ResultSet rs=pds.executeQuery();

五、JDBC工具类


获得数据库连接操作,每次的增删改查都会涉及到,所以可以封装成工具类,提供获取连接对象的方法,提高代码的复用率。


public class JDBCUtils {//定义静态不能修改的全局变量public static final String DRIVERNAME="com.mysql.jdbc.Driver";public static final String URL="jdbc:mysql://localhost:3306/day28";public static final String USERNAME="root";public static final String PASSWORD="123756";//静态代码块,类调用就执行且只执行一次static{try {//注册驱动Class.forName(DRIVERNAME);} catch (Exception e) {System.out.println("数据库驱动注册失败!");}}//提取获得连接的方法public static Connection getConnection() throws SQLException{//获得连接Connection con=DriverManager.getConnection(URL,USERNAME,PASSWORD);//返回连接return con;}}

六、Properties配置文件


参数:驱动、URL、用户名、密码通常存在配置文件中,方便后期的维护,如果需要更换数据库或用户名可以直接修改配置文件。


创建配置文件(格式如Properties文件):


driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/studentuser=rootpassword=123456

Properties配置文件工具类:


public class PropertiesUtils {private static String driver;private static String url;private static String user;private static String password;//静态代码块static{try {//使用properties处理流Properties props=new Properties();//读文件FileReaderFileReader fr=new FileReader("src/db.properties");//加载数据流props.load(fr);//getProperty获得键值driver=props.getProperty("driver");url=props.getProperty("url");user=props.getProperty("user");password=props.getProperty("password");//注册驱动Class.forName(driver);} catch (Exception e) {throw new RuntimeException(e);}}//获得连接public  static Connection getConnection(){try {Connection con=DriverManager.getConnection(url,user,password);return con;} catch (Exception e) {throw new RuntimeException(e);}}}


小结:


JDBC就是Java提供接口,不同数据库实现接口,将Java中数据和数据库对接起来,增删改查是主要操作。由此延伸出来封装的工具类和配置文件的使用。


0 0
原创粉丝点击