JDBC全名是Java Data Base Connectivity就是Java数据库连接,这是Java用于向数据库执行SQL语句的API,JDBC可以为多种关系型数据库提供统一的访问,而不用考虑细节,这样在应用程序开发中,就能够很方便的对数据库进行增删改查的基本操作,数据库的操作也是MVC架构中Model层数据访问的重要内容,下面简单的看一下JDBC的基本方式和步骤
这里以MySQL数据库为例,首先去mysql官网下载提供给java的标准驱动,下载链接:
然后点击Download按钮下载zip的包即可,
这一步网站会提示登录或者注册oracle的账户,这时候直接点击下面的No thanks,just start my download 继续下载
然后把zip包解压出来就得到最新版的:mysql-connector-java-5.1.37-bin.jar
为了以后的使用建议将这个jar包放到项目目录下,这里放在项目目录下的lib目录当中,然后在eclipse中刷新项目就看到了,
然后在项目上右击选择"Build Path"-->"Configure Build Path..."
然后在新对话框中,点击"Add JARs..."按钮,选择项目下的jar包,单击OK完成jar包的导入,现在就可以使用了
另外还可以先单击"Add External JARs...",然后导入计算机中任意目录的jar包,但是不建议使用,因为此时jar包并没有被放在项目目录下,而是引用的一个绝对路径,当项目被移植的时候,该调用就失效了,所以为了防止错误的发生,建议直接将该包放在项目下,然后使用Add JARs实现真正的导入到项目中
现在,工具准备完毕了,可以进行接下来的开发了,简单的测试代码如下:
1 package net.zengzhiying.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class DbTest {10 private static final String URL = "jdbc:mysql://127.0.0.1:3306/jdbctest";11 private static final String USER = "root";12 private static final String PASSWORD = "123456";13 public static void main(String[] args){14 try {15 //反向加载驱动程序16 Class.forName("com.mysql.jdbc.Driver");17 //获得数据库的连接18 Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);19 //操作数据库20 //获取Statement对象21 Statement stmt = conn.createStatement();22 //执行sql语句,获取结果集23 ResultSet rs = stmt.executeQuery("SELECT user_name,age FROM imooc_goddess");24 //获取返回的数据25 while(rs.next()){26 System.out.println("用户名:" + rs.getString("user_name") + " 年龄:" + rs.getInt("age"));27 }28 } catch (ClassNotFoundException e) {29 e.printStackTrace();30 } catch (SQLException e) {31 e.printStackTrace();32 }33 }34 }
注意一下,所有调用的类或者包都是java.sql下的,JDBC的基本步骤就可以概括为:加载驱动、获得连接、获取Statement对象,执行sql语句
最终都是使用连接句柄conn这个参数来操作数据库中的数据,查询数据库不用担心编码的问题,但是建议文件编码,数据库连接编码,数据库编码保持一致,向数据库中添加数据时,连接参数必须要包含Unicode字符支持,URL成员可以这样写:jdbc:mysql://127.0.0.1:3306/jdbctest?useUnicode=true&characterEncoding=UTF-8,然后添加的字符就能被数据库识别并且正常显示了
最后,JDBC只是一种数据库操作的基础,我们可以将初始化工作和增删改查的操作封装到一个类中,后续调用方法返回数据即可,另外从数据库中读取数据和向数据库中插入数据,在实际开发中,一般都用实体类的对象方式来传递数据,即传递的是一个对象,而不是字符串等,所以在java中所有的数据操作和开发都是操作的目标都是对象,然后把对象放到List等集合中进行交互,让程序结构层次更加清晰