MySQL-JDBC

目录

一、数据库驱动

二、对象说明


一、数据库驱动

定义了一套Java操作数据库的规范(接口),称之为JDBC(Java Database connect)

 

二、对象说明

代码

public class JdbcFirstDemo {
    public static void main(String[] args) throws Exception {
        //要连接的数据库URL
        String url = "jdbc:mysql://localhost:3306/jdbcStudy?
useUnicode=true&characterEncoding=utf8&useSSL=true";
        //连接的数据库时使用的用户名
        String username = "root";
        //连接的数据库时使用的密码
        String password = "123456";
        
        //1.加载驱动
        //DriverManager.registerDriver(new com.mysql.jdbc.Driver());不推荐使用
这种方式来加载驱动
        Class.forName("com.mysql.jdbc.Driver");//推荐使用这种方式来加载驱动
        //2.获取与数据库的链接
        Connection conn = DriverManager.getConnection(url, username, 
password);
        
        //3.获取用于向数据库发送sql语句的statement
        Statement st = conn.createStatement();
        
        String sql = "select id,name,password,email,birthday from users";
        //4.向数据库发sql,并获取代表结果集的resultset
        ResultSet rs = st.executeQuery(sql);
        
        //5.取出结果集的数据
        while(rs.next()){
            System.out.println("id=" + rs.getObject("id"));
            System.out.println("name=" + rs.getObject("name"));
            System.out.println("password=" + rs.getObject("password"));
            System.out.println("email=" + rs.getObject("email"));
            System.out.println("birthday=" + rs.getObject("birthday"));
        }
        //6.关闭链接,释放资源
        rs.close();
        st.close();
        conn.close();
    }
}

1、DriverManager类:
        用于加载驱动,并创建与数据库的链接

//这种方式不推荐使用,会创建两次对象
DriverManager.registerDriver(new Driver());
//推荐加载驱动方式
Class.forName("com.mysql.jdbc.Driver");

//创建与数据库的连接
Connection conn=DriverManager.getConnection(url, user, password);
//代表数据库对象,可以设置自动提交、事务提交、事务回滚。

2、url:
用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库

3、 Connection类

用于代表数据库的链接,客户端与数据库所有交互都是通过connection对象完成的

  • createStatement():创建向数据库发送sql的statement对象。
  • prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
  • setAutoCommit(boolean autoCommit):设置事务是否自动提交。
  • commit() :在链接上提交事务。
  • rollback() :在此链接上回滚事务。

4、Statement类:执行sql的对象

  • executeQuery(String sql) :用于向数据发送查询语句。
  • executeUpdate(String sql):用于向数据库发送insert、update或delete语句
  • execute(String sql):用于向数据库发送任意sql语句
  • addBatch(String sql) :把多条sql语句放到一个批处理中。
  • executeBatch():向数据库发送一批sql语句执行。

 5、ResultSet类:查询的结果集

  • 获取任意类型的数据
    getObject(int index)
    getObject(string columnName)
  • 获取指定类型的数据,例如:
    getString(int index)
    getString(String columnName)
  • 遍历、指针
    next():移动到下一行
    Previous():移动到前一行
    absolute(int row):移动到指定行
    beforeFirst():移动resultSet的最前面。
    afterLast() :移动到resultSet的最后面。

6、释放资源
 

1、SQL注入是什么?怎么防止?

SQL注入通过巧妙的技巧来拼接字符串,造成SQL短路,从而获取数据库数据
使用PreparedStatement对象,执行的时候参数会用引号包起来,并把参数中的引号作为转义字符,从而避免了参数也作为条件的一部分

2、数据库连接池:

编写连接池需实现java.sql.DataSource接口。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现 

c3p0:

private static ComboPooledDataSource ds = null;
ds = new ComboPooledDataSource("MySQL");

dbcp:

//加载dbcpconfig.properties配置文件
InputStream in=JdbcUtils_DBCP.class.getClassLoader()
                .getResourceAsStream("dbcpconfig.properties");
Properties prop = new Properties();
prop.load(in);
//创建数据源
ds = BasicDataSourceFactory.createDataSource(prop);

druid:阿里巴巴

c3p0与dbcp区别:

  • dbcp没有自动回收空闲连接的功能
  • c3p0有自动回收空闲连接功能 

负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
1. 最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有
大量的数据库连接资源被浪费.
2. 最大连接数:是连接池能申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将
被加入到等待队列中,这会影响以后的数据库操作
3. 如果最小连接数与最大连接数相差很大:那么最先连接请求将会获利,之后超过最小连接数量的连接
请求等价于建立一个新的数据库连接.不过,这些大于最小连接数的数据库连接在使用完不会马上被
释放,他将被放到连接池中等待重复使用或是空间超时后被释放.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值