数据库连接JDBC

        Java Database Connectivity简称JDBC,是Java中访问数据库的一种技术。JDBC有两部分组成,JDBC API和JDBC Driver Interface。

        JDBC的工作原理

                1、装载驱动程序(向DriverManager注册驱动程序)

                2、通过驱动管理器获得数据库连接

                3、得到能操作sql的接口:Statement或PreparedStatement

                4、执行sql

                5、处理返回的数据

                6、事务的处理,提交或回滚

                7、关闭数据库操作和连接      

常见的API接口描述
java.sql.Driver定义一个在每个数据库驱动程序中必须实现的驱动程序界面
java.sql.DriverManager用来管理数据库驱动
java.sql.Connection一个连接,表示与某一数据库的连接会话,可以处理SQL和返回结果
java.sql.Statement用作执行一条静态的sql语句并接收产生的结果
java.sql.PreparedStatement保存一个预编译的sql语句对象,该对象可被高效的执行多次
java.sql.ResultSet执行sql后产生的结果集。
java.sql.CallableStatement用于执行存储的sql过程的界面。

 1、Connection

         Connection对象代表与数据库的连接。连接过程包括执行sql语句和返回结果。一个应用程序可以与单个或多个数据库连接。

        1、加载数据库驱动程序:Class.forName("com.mysql.cj.jdbc.Driver");

        2、通过驱动管理器获得数据库连接:String url="jdbc:mysql://localhost:3306/data?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";

        3、调用DriverManager对象的getConnection(url,user,password)方法获取到Connection对象

2、Statement

        通过Connection对象的createStatement()方法可以获取到一个Statement对象,这个对象是用来操作数据库的。实现动态查询时需要字符串拼接,无法防止sql注入。

        如果是查询语句,就调用execteQuery(sql)方法。将sql语句传入Statement对象会返回一个ResultSet集,但这个集是临时的,随着Connection对象的关闭会消失,所以需要创建对应的List集用来接收结果。

        如果是增删改语句,则调用executeUpdate(sql)方法。返回执行的行数。

Connection conn=Utils.getConn();//首先从工具类获得数据库连接
//查询案例
String sql="select * from table";//定义查询语句
Statement stmt=conn.createStatement();//获取stmt对象
ResultSet rs=stmt.executeQuery(sql);//返回结果集
//删除案例
String sql="delete from table";//定义删除sql语句
int i=stmt.executeUpdate(sql);//返回执行的行数

3、PrepareStatement

        PrepareStatment是一个支持占位符的操作数据库对象,用法与Statement有所不同。Statement对象可以先创建对象再将sql语句传递给执行的增删改查方法。PrepareStatement对象需要将预编译好的SQL语句传入,通过调用setString(index,value)方法,将需要输入的值赋给对应的位置,再调用对应的executeQuery方法或者executeUpdate方法进行增删改查。更易于维护和阅读,且有效防止sql注入。

Connection conn=Utils.getConn();//根据工具类获取数据库连接
//多行插入
String sql="insert into table(name,id) values(?,?)";//定义预编译的sql语句
preparedStatement pstmt=conn.prepareStatement(sql);//将预编译语句赋给pstmt对象
pstmt.setString(1,"张三");//将占位符1的位置赋值为张三
pstmt.setInt(2,123);//将占位符2的位置赋值为123
pstmt.addBatch();
pstmt.setString(1,"李四");
pstmt.setInt(2,124);
pstmt.addBatch();
pstmt.executeBatch();//执行多行插入语句

        3.1日期和时间

        在java中存在多种不同的日期格式,有时候以Date的形式出现,有时候以String的形式出现。在与MySQL数据库交互数据的时候,需要保证传入的数据类型和接收的数据类型一致,如果不一致就需要进行类型转换。

        在MySQL数据库中常见的日期类型有Date(年月日)和DateTime(年月日时分秒),数据库可以识别字符串类型的日期,也可以识别对应的java.sql包下的日期类型。我们日常在程序中使用的日期主要是java.util包下的,两者相似但又不相同。

        java.sql.Timestamp数据库的日期类型(年月日时分秒)

        java.sql.Date数据库的日期类型(年月日)

4、CallableStatement

        CallableStatement接口是用来调用存储过程的方法。这个接口也支持占位符,可以通过对应的set方法赋值给存储过程的in参数,还可以通过registerOutParameter(index,Types)获取到执行完成后存储过程的out参数。通过调用execute方法来执行存储过程,返回boolean。   

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值