1、JDBC是什么?
Java语言连接数据库,是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。
2、JDBC的本质是什么?
JDBC是SUN公司制定的一套接口(interface),也就是说SUN公司只负责定义,而不负责实现。作为开发人员是面向接口而编程。只需调用SUN公司提供的接口即可,而无需关心接口具体实现。java.sql.* (这个软件包下有许多的接口)
3、为什么要面向接口编程?
接口都有调用者和实现者,作为开发人员需要调用相应的接口,而如何实现则无需关心,为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展力。多态就是典型的:面向抽象编程,不面向具体编程。比如一个方法里的参数类型是接口类型,这样只需传入接口实现类即可,如果在方法参数写成类类型,那么就只能传入对应的类,不利于维护和修改。
4、为什么SUN制定一套JDBC接口?
为Java软件工程师修一座桥连接不同的数据库,上边已经说了,Java软件工程师只需调用SUN公司提供的接口即可,而接口的具体实现类正是由各大数据库厂商负责,因为每种数据库的实现原理不一样,Oracle数据库有自己的原理。MySQL数据库也有自己的原理。SqlServer数据库也有自己的原理。如果没有SUN公司提供的接口,我们就要学习各大数据库厂商的实现类代码,非常复杂和麻烦,每个数据库厂商的实现都不一样,而有了SUN公司提供的接口后就简单了,当SUN公司将接口定义好后,各大数据库厂商纷纷相应,分别对接口进行实现,而我们只需将他们写的接口实现类下载下来,引入到项目当中,然后调用SUN公司提供的接口即可。
5、JDBC开发前的准备工作——下载jar驱动包
- jar包里边就是各大数据库厂商的具体实现类,我这里下载的是SQL server的驱动jar包。
- 开发工具使用的是IDEA。
- 数据库使用的是SQL server2012。
5.1、打开IDEA,新建一个Java Web项目
- 在Java Web项目中的WEB-INF文件下新建一个lib文件夹,不要在根目录下或者其它文件夹建。
- 将下载好的驱动jar复制到lib文件夹中。
- 右键lib文件,选择Add as Library。
5.2、JDBC中主要的接口和类如下:
6、JDBC的具体开发步骤
6.1、注册驱动
告诉Java程序,即将要连接的是哪个”品牌“的数据库,SQL server的注册方式:
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
6.2、连接数据库
表示JVM进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,用完之后一定要关闭通道,代码如下:
Connection conn = null; String url = "jdbc:sqlserver://localhost:1433;databaseName=StudentManage"; try { conn = DriverManager.getConnection(url,"sa","sql2012"); } catch (SQLException sqlException) { sqlException.printStackTrace(); }
6.3、获取发送SQL的对象
通过Connection对象获取Statement对象,专门执行sql语句的对象.
Statement statement = null; try { statement = conn.createStatement(); } catch (SQLException sqlException) { sqlException.printStackTrace(); }
6.4、执行SQL语句、处理结果
String addSql = "INSERT INTO Students(Name,LoginName,LoingPwd) values('小明','xm','123')"; try { int resultCount = statement.executeUpdate(addSql); if (resultCount == 1) { System.out.println("add data success....."); } } catch (SQLException sqlException) { sqlException.printStackTrace(); }
6.5、释放资源
try { statement.close(); conn.close(); } catch (SQLException sqlException) { sqlException.printStackTrace(); }
遵循先开后关原则,释放所有使用到的资源对象。