初识 java-JDBC,mysql 索引左前缀原理
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()方法时并不是每次调用时都创建新的连接对象,就是在数据库连接池中寻找,如果找到了,就不用建立新的连接
评论