赞
踩
为最近学习的JDBC知识进行一个总结。
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java
开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包含一些通用的接口类。
JDBC访问数据库层次结构:
JDBC优势:
在进行编程需要准备好数据库驱动包。具体操作:
在项目中创建文件夹lib,并将依赖包mysql-connector-java-5.1.47.jar复制到lib中。再右键点击lib文件夹选择Add as Library即可。
JDBC这里的编程大体上都是类似的,但是使用update、delete、insert语句与select语句的JDBC编程略微不同。这里分为两种。
(1)更新语句JDBC编程
因为update、delete与insert语句JDBC代码类似这里只举例insert。
public static void main(String[] args) throws SQLException { //1、创建数据源 DataSource dataSource=new MysqlDataSource(); //数据库服务器地址 ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://localhost:3306/java111?CharacterEncoding=utf8&useSSL=false"); //数据库用户名 ((MysqlDataSource)dataSource).setUser("root"); //数据库密码 ((MysqlDataSource)dataSource).setPassword("1234"); //2、与数据库服务器建立连接 Connection connection= (Connection) dataSource.getConnection(); //输入id及name Scanner sc=new Scanner(System.in); System.out.println("输入id:"); int id=sc.nextInt(); System.out.println("输入name:"); String name=sc.next(); //3、建立sql语句 //这里sql语句可以直接写成字符串,也可以像下面这行代码使用之前输入的变量进行字符串拼接 //String str="insert into test values ("+ id + ",'"+name+"')"; //这段代码使用了这种占位符的方法,之后将输入的变量按顺序插入到字符串中即可 String str="insert into test values (?,?)"; PreparedStatement preparedStatement=connection.prepareStatement(str); //插入字符串变量,顺序为第二个插入 preparedStatement.setString(2,name); preparedStatement.setInt(1,id); //4、执行之后返回更新的行数 int n=preparedStatement.executeUpdate(); //5、释放资源 preparedStatement.close(); connection.close(); }
update和delete的JDBC编程也是这样,知识修改sql语句的区别而已。
(2)查询语句JDBC编程
public static void main(String[] args) throws SQLException { //1、建立数据源 DataSource dataSource=new MysqlDataSource(); ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://localhost:3306/java111?CharacterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("1234"); //2、建立连接 Connection connection=(Connection) dataSource.getConnection(); //3、建立sql String str="select *from test"; PreparedStatement preparedStatement=connection.prepareStatement(str); //4、执行sql,这里就是与更新语句不同的地方 //更新语句返回的是整数,但是查询语句返回的是数据的集合,需要以以下形式接收 ResultSet resultSet=preparedStatement.executeQuery(); //可以像迭代器那样使用 //这里将返回的数据按数据表列名进行输出 while (resultSet.next()) { int id=resultSet.getInt("id"); System.out.println("id="+id); String name=resultSet.getString("name"); System.out.println("name="+name); } //5、释放资源 resultSet.close(); preparedStatement.close(); connection.close(); }
在Java JDBC编程中对数据库的操作均使用JDK自带的API统一处理,通常与特定数据库的驱动类是完全解耦的。所以掌握Java JDBC API (位于 java.sql 包下) 即可掌握Java数据库编程。
Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:
//加载jdbc驱动
Class.forName("com.mysql.jdbc.Driver");
//创建数据库连接
Connection connection = DriverManager.getConnection(url);
DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();
Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象。
实际开发中最常用的是PreparedStatement对象,以下对其的总结:
主要掌握两种执行SQL的方法:
ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当
前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。