JDBC学习的笔记

1、JDBC是什么?

Java中用于执行SQL语句的API,可以实现对数据库的操作。

2、如何使用JDBC编程

一、加载并注册数据库驱动
在lib包里添加MySQL的jar包(可以到官网下载),右击Add As Library
在这里插入图片描述
二、获取数据库的连接
在这之前创建好数据库。
方法一:
通过DriverManager类获取:

Connection conn=DriverManager.getConnection(String url,String user,String pwd);

URL 代表着是统一资源定位符(Uniform Resource Locator)MySQL数据库的书写格式为:

jdbc:mysql://hostname:port/database

如果数据库在本机则hostname为localhost或127.0.0.1,端口号默认是3306,这两个可以省略。
如果在其他计算机中,hostname可以连接计算机的IP地址。

三、通过connection对象获取Statement对象
如果将Connection看做是一条连接数据库与程序的索道,那Statement对象就可以看做是索道上的缆车,他为数据库传送SQL语句。

Statement stmt=conn.createStatement();

四、使用Statement执行SQL语句
先创建实现功能的SQL语句

String sql=“select name from users where id=1”;
ResultSet rs=stmt.executeQuery(sql);

Statement 有三个可以执行SQL语句的方法:
:execute() 可以执行任何SQL语句
:executeQuery()可以执行查询语句,返回ResultSet结果集。
注意SQL语句里的变量名应该和表的变量名一样

sql=“insert into tb_brand(brand_name,company_name,ordered,description,status)values(?,?,?,?,?)”;

:executeUpdate()执行DDL(返回0)和DML语句(返回受影响的行数)
五、操作结果集
如果返回的是结果集,就可以通过rs.next()将游标移动获取结果,也可以通过getString(int columnindex)方法获取参数columnindex索引处的值
六、释放资源
关闭顺序与声明顺序相反。先关闭ResultSet对象,再关闭Statement对象,再关闭Connection对象。

3、升级

为了防止SQL注入(通过SQL语句,实现无账号登录,甚至修改数据库。)我们会使用PreparedStatement来建立连接,同时为了提高效率,也可以使用数据池(为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去)
下面例子是使用的Druid数据库连接池。
1、首先配置文件
Properties文件,后缀为“.properties”,属文本文件,文件的内容格式是“键=值”的格式,可以用“#”作为注释。java应用通过JDBC连接数据库时,通常需要在代码中写数据库连接字符串。
Properties类配置文件的操作类,常用方法:load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。
在idea中创建文本文件:在这里插入图片描述
数据池初始有五个数据,最多可以有十个。URL存放的是本机的数据库a

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///a?useSSL=false&useServerPrepStmts=true
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000

实现查询功能的代码如下:

查询所有信息  用数据连接池
    public void testSelectAll() throws Exception {
        //1、获取connection
        // 加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("D:\\code\\javatest1\\javatest2\\src\\druid.properties"));//properties的位置
       //获取连接池对象
        DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接connection
        Connection connection=dataSource.getConnection();

        //2、定义SQL语句
        String sql="select *from tb_brand";
        //3、获取pre对象
        PreparedStatement ps=connection.prepareStatement(sql);
        //4、设置参数


        //5、执行SQL
       ResultSet rs= ps.executeQuery();
       //6、处理结果 List<Brand>
        List<Brand> list=new ArrayList<>();
                Brand brand=null;
        while(rs.next()) {
        //获取数据
            int id = rs.getInt("id");
            String brandName = rs.getString("brand_name");
            String companyName=rs.getString("company_name");
            int ordered = rs.getInt("ordered");
            String description = rs.getString("description");
            int status = rs.getInt("status");

            //封装Brand对象
            brand=new Brand(id,brandName,companyName,ordered,description,status);
            //封装集合
            list.add(brand);
        }
        System.out.println(list);
        //7、释放资源
        rs.close();
        ps.close();
        connection.close();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值