大家好!
JDBC是访问数据库的基石头,JDO、Hibernate、MyBatis等框架只是更好的封装了JDBC。
所以,想要框架用得更好,更明白,还是要从JDBC基础开始了解。
概念:Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
那么,意味着当你使用JDBC时,你就可以通过Java语言实现对数据库里数据的增删改查,来完成你自己想要的数据需求。
接下来,大家可以通过如下图,了解java应用程序和数据库是如何实现相互连接的:
从图中,我们发现Java应用程序并不是直接和数据库进行交互,而是通过JDBC这个“中间商”来完成数据的相关操作。那么为什么需要这个“中间商”呢?
我们从JDBC的API分析,发现包括2个层次,一个是面向应用API,及对Java应用程序开发人员使用;一个是面向数据库API,及对开发商家开发数据库驱动程序用。
那么,这将意味着,我们Java程序员只需要掌握面向应用API,就可以对不同商家的数据库进行交互,大大减少了开发人员的学习成本。同时,不同的开发数据库商家只要能遵循JDBC面向数据库API,那么自己开发的数据库的通用性将大大提高。
打个比方,就像你现在需要租一间房子,如果没有房屋中介商,那就意味着你将去不同的地方一个一个看,花费大量时间,而且租房的主人,空有房子却不能让更多的人知道。那么,如果有了这个中间商,买家只需要说出个人对房子的位置,价格等要求,中间商将会直接提供匹配租房即可。而卖家也只需要将个人房屋信息授权给中间商,等到交易完成即可,过程中将不会花费太多精力。
所以,Java应用程序为了能更好,更有效的访问数据库,JDBC必不可少。
首先,第一步,这个东西是别人提供给我们的,所以不要忘记导包了。
若没有用maven,则手动导入包,复制mysql-connector-java-5.1.37-bin.jar在idea项目下,将其添加在库下:
如下即可:
其次,第二步,注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
注意:这里的参数是刚才自己导入的mysql-connector-java-5.1.37-bin.jar包里面的com下的jdbc包里的Driver
进入Driver,我们发现其实里面是通过DriverManager来实现驱动的注册,
DriverManager 类是驱动程序管理器类,负责管理驱动程序
接下来,第三步,得到连接对象
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获得连接对象
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";//个人数据库用户名
String password = "root";//个人数据库密码
DriverManager.getConnection(url,user,password);
这里值得说一下 String url = "jdbc:mysql://localhost:3306/test" 这句换的含义
然后,第四步,获得Statement对象实现CRUD操作
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获得连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, user, password);
//获得Statement实现CRUD操作
//注意:要防范 SQL 注入,只要用PreparedStatement(从Statement扩展而来)取代Statement
//关于注入SQL注入问题,下一个专题专门讲
Statement sta = con.createStatement();
最后,第五步,通过刚才的Statement对象,执行SQL语句操作数据(这里仅仅针对数据库的增删改操作)
这里举一个列子,完成对数据库数据的修改
需求:用JDBC将该表的班长改为副班长
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获得连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, user, password);
//获得PreparedStatement实现CRUD操作
注意:要防范 SQL 注入,只要用 PreparedStatement(从Statement扩展而来)取代Statement
Statement sta = con.createStatement();
//定义Sql语句
String sql = "UPDATE sys_role SET roleName='副班长' WHERE id =6";
//执行sql语句
sta.executeUpdate(sql);
//关闭资源
sta.close();
con.close();
运行结果:
好了,以上就是一个关于JDBC的快速入门操作流程了,这是针对刚刚学JDBC初学小伙伴的,里面很多细节我们都没有讲,包括一些异常处理,使用PreparedStatement防止sql注入,还有对数据库数据的查询操作等,后面我们循序渐进一个一个的针对这些细节部分展开专题,我们下期见!