写点什么

初识 java-JDBC,mysql 索引左前缀原理

用户头像
极客good
关注
发布于: 刚刚

2.具体流程



1.先和数据库建立连接

(1)先创建一个数据源


DataSource dataSource=new MysqlDataSource();


(2)给数据源设置属性,数据源就是告诉代码数据库服务器在哪里。


((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/homework?characterEncoding=utf8&useSSL=false");


((MysqlDataSource)dataSource).setUser("root");


((MysqlDataSource)dataSource).setPassword("123456");


端口号后面的是要连接的数据库的名字


(3)通过 getConnection()方法来建立连接, 选择 Connection 时一定要选 java.sql 后缀的


Connection connection=dataSource.getConnection();

2.拼装 SQL 语句

1.先写一条 SQL 语句


String sql="insert into purchase values (1,2,3,5)";


2.实际上我们需要的是一个“语句对象” ,需要使用 PreparedStatement 来构造


PreparedStatement statement=connection.prepareStatement(sql);

3.执行 SQL 语句

根据所执行的 SQL 语句不同,选择不同的语句执行


如果所执行的语句是insert, delete,update语句使用executeUpdate()


如果当前语句是select使用executeQuery()


分类依据就是是否更新,增删改都是更新过的,有更新就选 Update


查询没有更新,查询语句就选 Query,查询语句不仅仅返回结果正确与否,还要返回查询出的结果。


这是根据插入语句写的,插入,删除,修改语句返回结果 1,即成功,返回结果 0 就是失败了


int ret=statement.executeUpdate();


System.out.println("ret="+ret);


而如果语句是查询语句 Select 和其他三种都是不同的,需要获取到当前纪录


ResultSet resultSet=statement.executeQuery();


while(resultSet.next()){


//获取到当前纪录,(当前行的每一列)


int order_id=resultSet.getInt("order_id");


int customer_id=resultSet.getInt("customer_id");


int goods_id=resultSet.getInt("goods_id");


int nums=resultSet.getInt("nums");


System.out.println(order_id+", "+customer_id+", "+goods_id+", "+nums);


}


并且返回的结果中带有数据库的信息。

4.释放申请的资源

statement.close();


connection.close();


resultSet.close();


释放顺序和执行顺序相反


这种和数据库建立连接的方式就是一次只能插入一条数据,是和数据库连接,将数据写死了


我们应该动态建立和数据库的连接就将 sql 语句中需要插入的部分,写成?占位符,使用 statement.set(类型)来给?赋值


总结


=====================================================================


服务器可能会收到很多的请求.针对每一个请求,都可以创建 Connection,PreparedStatement,ResultSet 对象,但是这些请求之间彼此共用一个 DataSource


如果当前服务器收到的请求很多,那么也一定有很多 Connection,PreparedStatement,ResultSet 对象,但是建立 Connection 对象的开销,远远比其他两个大,因为是要建立连接,所有我们使用.getConnection()方法时并不是每次调用时都创建新的连接对象,就是在数据库连接池中寻找,如果找到了,就不用建立新的连接

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
初识java-JDBC,mysql索引左前缀原理