发表于: 2018-04-25 17:55:21
1 646
今天完成的事情:
任务17中的一小部分内容:用java本身的jdbc方式操作数据库。
了解spring框架的大概内容。
明天计划的事情:
用spring框架操作数据库
遇到的问题:
收获:
JDBC方式操作数据库:参考资料:https://www.cnblogs.com/xiaotiaosi/p/6394554.html
JDBC是SUN 为了实现java对多款数据库的操作,而提供的一套统一接口。之后由数据库的厂家针对该套接口规范自制对应的驱动。当项目需要用到那个数据库时就添加数据库的驱动jar包。
JDBC:由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从而实现对数据库中的数据操作的目的。
JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。
主要功能:
(1)建立与数据库或者其他数据源的链接
(2)向数据库发送SQL命令
(3)处理数据库的返回结果
常用的接口:
连接到数据库(Connection)、建立操作指令(Statement)、执行查询指令(executeQuery)、获得查询结果(ResultSet)
驱动程序管理类
DriverManager类:JDBC的管理类,作用于用户和驱动程序之间。
它跟踪在可用的驱动程序,并在数据库和相应驱动程序之间建立连接。
DriverManager类也处理诸如驱动程序登陆时间限制及登录和跟踪消息的显示事务。
对于简单的应用程序,一般程序员需要在此类中直接使用唯一的方法时DriverManager.getConnection():该方法将建立与数据库的链接。
声明类
Statement对象:用于将SQL语句发送到数据库中。
实际上有三种Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。
(1)Statement对象:用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。
(2)PerparedStatement对象:用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法;(一般使用)
(3)CallableStatement对象:用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。
Statement提供了许多方法,最常用的方法如下:
(1)execute()方法:运行语句,返回是否有结果集。
(2)executeQuery()方法:运行查询语句,返回ReaultSet对象。
(3)executeUpdata()方法:运行更新操作,返回更新的行数。
(4)addBatch()方法:增加批处理语句。
(5)executeBatch()方法:执行批处理语句。
(6)clearBatch()方法:清除批处理语句。
数据库连接类
Connection对象:代表与数据库的链接。
连接过程包括所执行的SQL语句和在该连接上所返回的结果。
一个应用程序可与单个数据库有一个或多个连接,或者可与很多数据库有连接。
打开连接与数据库建立连接的标准方法是调用DriverManager.getConnection()方法。
连接数据库
String url="jdbc:mysql://127.0.0.1:3306/imooc";//数据库地址
String user="root";//数据库名称
String password="tiger";//数据库密码
DriverManager.getConnection(url,user,password);
结果集合类
ResultSet:包含符合SQL语句中条件的所有行记录,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。
ResultSet.next()方法用于移动到ResultSet中的下一行,使下一行成为当前行。
5、JDBC编程步骤
(1)加载驱动程序:Class.forName(driverClass)
加载mysql驱动:Class.forName("com.mysql.jdbc.Driver");
加载oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");
(2)获得数据库连接
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc",user,password);
DriverManager.gerConnection(URL,user,password);
{方法一:会导致SQL注入的问题,一般不使用
(3)创建Statement对象:conn.createStatement();
(4)向数据库发送SQL命令
}
{方法二:使用prepareStement对象,可以避免SQL注入的问题
(3)创建sql语句;
(4.1)创建prepareStement对象:conn.prepareStement(sql语句);
(4.2)设置sql语句中的参数:prepareStement.setInt(1,int数据);
(4.3)向数据库发送SQL命令
executeUpdate();用于添加、修改、删除操作。可执行增,删,改,返回执行受到影响的行数。
executeQuery();用于查询操作。执行SQL查询,并返回ResultSet 对象。
}
(5)处理数据库的返回结果(ResultSet类)
第一个JDBC程序
1.创建maven环境下的JDBC。
2.java连接MYSQL必须添加MYSQL的驱动包
3.下载驱动包后添加到maven的本地仓库中
4.在maven的项目配置文件pom.xml中添加依赖
5.创建src下的源代码文件夹
6.创建java类
7.编程
package jdbc1;
import java.sql.*;
public class JdbcOne {
public static void main(String args[]) throws ClassNotFoundException, SQLException {
//使用SQL语言相关的内容需要抛出SQL异常,使用类的反射需要抛出类反射异常
Class.forName("com.mysql.jdbc.Driver");//使用类反射机制加载MYSQL驱动程序,会创建一个DriverManager的对象
String url1="jdbc:mysql://localhost:3306/student";
//设置数据库的地址,localhost:本地 3306:固定端口号 student:数据库的名称
Connection connection=DriverManager.getConnection(url1,"root","188207");
//user:数据库的账号;password:数据库的密码 创建数据库的连接对象connection
String sql="select name,ID from stu where ID=?";//声明一个查询的sql语句
PreparedStatement preparedStatement=connection.prepareStatement(sql);
//创建声明对象,用来发送SQL语句
preparedStatement.setInt(1,5);//给SQL语句里面的?赋值
ResultSet resultSet=preparedStatement.executeQuery();
//创建结果集对象获取结果,用来操作结果集
while(resultSet.next()){//如果有下一个
System.out.println(resultSet.getString("name")+" "+
resultSet.getString("ID"));
}
}
}
编译后显示下方结果:
对数据库的操作包括CRUD是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete),上面是对数据库的读取操作
重新建一个数据库来实现CRUD操作
Create增加操作
package jdbc2;
import java.sql.*;
public class JdbcC {
public static void main(String []args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");//加载驱动,并创建驱动管理对象
String url="jdbc:mysql://localhost:3306/TestStudent";
Connection connection=DriverManager.getConnection(url,"root","188207");//连接数据库,并创建数据库连接对象
String sql1="INSERT into student (name,age,sex)values(?,?,?) ";
PreparedStatement preparedStatement=connection.prepareStatement(sql1);
preparedStatement.setString(1,"张三");
preparedStatement.setInt(2,25);
preparedStatement.setString(3,"男");
preparedStatement.executeUpdate();
String sql2="select * from student";
preparedStatement=connection.prepareStatement(sql2);
ResultSet resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getString("name")+" "+
resultSet.getString("age")+" "+
resultSet.getString("sex"));
}
}
}
成功添加记录。
添加多几条记录
更新(Update)操作
package jdbc3;
import java.sql.*;
public class JdbcU {
public static void main(String []args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/TestStudent";
Connection connection=DriverManager.getConnection(url,"root","188207");
String sql1="update student set age=20 where id=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql1);
preparedStatement.setInt(1,2);
preparedStatement.executeUpdate();
String sql2="select * from student";
preparedStatement=connection.prepareStatement(sql2);
ResultSet resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getString("name")+" "+
resultSet.getString("age")+" "+
resultSet.getString("sex"));
}
}
}
删除(Delete)操作
package jdbc4;
import java.sql.*;
public class JdbcD {
public static void main(String args[]) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/TestStudent";
Connection connection=DriverManager.getConnection(url,"root","188207");
String sql="delete from student where id=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,2);
preparedStatement.executeUpdate();
String sql2="select * from student";
preparedStatement=connection.prepareStatement(sql2);
ResultSet resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getString("name")+" "+
resultSet.getString("age")+" "+
resultSet.getString("sex"));
}
}
}
spring的理解:
spring主要的核心有两点:
一是ioc:控制反转,解决不同类间耦合度过高的问题
在一个类A中创建一个类B
传统方式:类A中创建类B对象
ioc:把类B的创建放到xml文件中,由ioc创建,然后在类A中调用ioc的获得指定类的方法获得类B对象
另外一个是AOP:实现需要扩展功能时,不需要修改源代码
添加一个新功能
传统:在源代码中,相应方法的位置增添代码
AOP:把需要增添的功能提供给.xml文件,调用AOP的添加方法,把新功能插入到源代码前后。
评论