java学习day18----JDBC操作基本操作

1.JDBC了解 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 2.开发步骤 1.创建一个java项目 2.导入mysql的数据库驱动jar包 驱动包 3.注册驱动 Class.forName(“”) 4.获取与数据库的链接 5.得到代表发送和执行SQL语句的对象 Statement 6.执行语句 7.如果执行的是查询语句,就会有结果集,处理 8.释放占用的资源 3.代码

        // 注册数据库驱动
        DriverManager.deregisterDriver(new Driver());
        // 获取数据库连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "123456");
        // 获取执行sql语句的statem0ent
        Statement st = conn.createStatement();
        String sql = "select * from user ";
        // 执行sql语句增删改查
        //st.executeUpdate("insert into user values(12,'杨过','123456')");
        //st.executeUpdate("update user set namer='杨康' where id='12'");
        //st.executeUpdate("delete from user where id='12'");
        ResultSet set = st.executeQuery(sql);
        while (set.next()) {
            // 获取指定位置的数据,角标从1 开始
            String com1 = set.getString(1);
            String com2 = set.getString(2);
            String com3 = set.getString(3);
            String com4 = set.getString(4);
            System.out.println(com2 + ":" + com3 + ":" + com4 + ":" + com1);
        }
        // 释放数据库资源
        set.close();
        st.close();
        conn.close();

4.PreparedStatement  PreparedStatement实现Statement  PreparedStatement需要预编译以及需要参数  由于PreparedStatement有缓存区,所以效率更高  由于PreparedStatement有缓存区,所以更安全,防止了注入(1=1)  语句中的参数可以使用占位符(?) ?

   // 准备sql预编译语句
    // ?占用一个参数位
    String sql = "INSERT INTO user (NAME,sex,age) VALUES (?,?,?);";
    // 3:执行sql预编译语句(检查语法)
    stsm=conn.prepareStatement(sql);
    // 4:设置传递的参数
     stsm.setString(1,"张三");
     stsm.setString(2,"男");
     stsm.setInt(3,20);
    // 5:发送参数,执行sql
    // 注意:这里的方法后面没有参数
    int result = stsm.executeUpdate();

5.封装工具类的使用 1)db.properties

className=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/reba
name=root
password=12345

2)JdbcUtil.class

public  static   String DRIVER ;
    public  static   String URL ;
    public  static   String USERNAME ;
    public  static   String PASSWORD ;

    static{
        //读取配置文件的方式 
        InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
        Properties p = new Properties();
        try {
            p.load(is);
            DRIVER = p.getProperty("driverClass");
            URL = p.getProperty("jdbcUrl");
            USERNAME = p.getProperty("username");
            PASSWORD = p.getProperty("password");

            Class.forName(DRIVER);//加载驱动
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取数据库连接
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception{
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    /**
     * 关闭资源的方法
     * @param rs
     * @param st
     * @param con
     */
    public static void release(ResultSet rs ,Statement st,Connection con){
        //6.关闭资源  (有顺序)
        if(rs!=null){
             try {
                rs.close();
                rs = null;  //垃圾回收器立即回收
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(st!=null){
            try {
                st.close();
                st = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(con!=null){
            try {
                con.close();
                con = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

3)Test.class

Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            con = JdbcUtil.getConnection();
            st = con.createStatement();
            rs = st.executeQuery("");
            while(rs.next()){
                //封装数据
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtil.release(null, st, con);
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JadePeng的技术博客

Spring boot国际化

修改properties文件的目录:在application.yml或者application.properties中配置 spring.message.bas...

14210
来自专栏刘望舒

LeakCanary看这一篇文章就够了

LeakCanary是Square公司基于MAT开源的一个内存泄漏检测工具,在发生内存泄漏的时候LeakCanary会自动显示泄漏信息。

3.2K50
来自专栏wannshan(javaer,RPC)

dubbo监控机制之监控中心实现分析

这里的监控中心以dubbo-ops\dubbo-monitor-simple项目说 总的来说是监控中心启动一个sevlet容器,通过web页面向用户多维度的展...

1.4K60
来自专栏编码小白

tomcat请求处理分析(六)servlet的处理过程

1.1.1.1  servlet的解析过程 servlet的解析分为两步实现,第一个是匹配到对应的Wrapper,第二个是加载对应的servlet并进行数据,这...

75470
来自专栏java 成神之路

HttpURLConnection 中Cookie 使用

503120
来自专栏岑玉海

Carbondata源码系列(一)文件生成过程

在滴滴的两年一直在加班,人也变懒了,就很少再写博客了,最近在进行Carbondata和hive集成方面的工作,于是乎需要对Carbondata进行深入的研究。 ...

66660
来自专栏爱撒谎的男孩

地址管理之省市区三级联动菜单

1.1K30
来自专栏别先生

struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

  其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,...

21470
来自专栏分布式系统进阶

Librdkafka的操作处理队列

32120
来自专栏别先生

jsp+servlet实现最基本的注册登陆功能

源码和数据库下载地址:http://download.csdn.net/detail/biexiansheng/9759722 1:首先需要设计好数据库和数据表...

66360

扫码关注云+社区

领取腾讯云代金券