JDBC学习总结_1_PreparedStatement

学的东西多了就容易忘记, 希望通过写总结的方式记录一些重要的知识点, 也便于日后复习 最重要的是每次总结都是对相关知识的重新思考 理解的越深入,记忆越深刻;


jdbc的引入
各种数据库都是不一样的,也就是说java程序员需要对不同的数据库连接提供不同的实现, 但是数据库厂商的数据库一般不是开源的 ,不了解内部原理是没法儿实现, 再者数据库对开发人员而言只是一个存储数据的工具,花费如此大的精力在这上面未免也太蠢了. 最好的方式就是java提供接口, 数据库厂商自己来实现;
java提供访问数据库的统一规范称为JDBC, 而各大数据库厂商提供规范的实现类称为驱动;
每个数据库厂商都要提供自己的驱动,用来连接自己公司的数据库; 而程序员只需要针对这个规范来编程


JDBC的开发步骤:
1.注册驱动
DriverManager:管理了一组jdbc的操作 类
static void registerDriver(Driver driver); 这个方法用来注册驱动.参数Driver是一个接口, 在数据库驱动有具体实现;
通过查看 com.mysql.jdbc.Driver的源码 发现:

    static {
                try {
                        // 驱动类中的静态代码块已经做了注册驱动的操作,也就是说 我们只需要加载 
                        // com.mysql.jdbc.Driver类的字节码文件
                        // Class.forName("com.mysql.jdbc.Driver");
                        java.sql.DriverManager.registerDriver(new Driver());
                    } catch (SQLException E) {
                        throw new RuntimeException("Can't register driver!");
                    }
            }

2.获得连接
static Connection getConnection(String url, String user, String password)
参数1:告诉我们连接什么类型的数据库及连接那个数据库
协议:数据库类型:子协议 参数
mysql: jdbc:mysql://localhost:3306/数据库名称
oracle: jdbc:oracle:thin@localhost:1521@实例
3.获得sql语句执行对象
Statement与PreparedStatement的区别:
后者是预编译语句执行对象, 相比statement而言,它有两个优点:
(1). PreparedStatement的sql语句可以有参数(?占位符), 避免的SQL语句中进行字符串拼接带来的安全隐患(注入攻击).
(2). 数据库可以对预编译的sql语句进行缓存, 也就是说,当用户在对数据库进行批量操作 或是 重复操作 时,PreparedStatement的执行效率相当明显的;
4.执行sql语句
5.处理结果
ResultSet接口
boolean next():判断是否有下一条记录,若有返回true且将光标移到下一行,若没有呢则返回false
光标一开始处于第一条记录的上面
6.释放资源


实际开发中我们会将连接数据库要用到的数据写入配置文件,下面介绍操作配置文件的两种方法 :
(1)若我们的配置文件为properties,并且放在src目录下.
我们可以通过 ResourceBundle工具快速获取里面的配置信息
使用步骤:
1>.获取ResourceBundle 对象:
static ResourceBundle getBundle(“文件名称不带后缀名”)
2>.通过ResourceBundle 对象获取配置信息
String getString(String key) :通过执行key获取指定的value

(2)通过IO流和Properties

    private static void readConfig() throws IOException{
        //通过类加载器来获得配置文件路径;
        InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
        Properties pro = new Properties();
        pro.load(in);
        driverClass = pro.getProperty("driverClass");
        url = pro.getProperty("url");
        username = pro.getProperty("username");
        password = pro.getProperty("password");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值