zoukankan      html  css  js  c++  java
  • Java学习笔记36(jdbc快速入门)

    JDBC:

      Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口

      (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql sever ,sqlyog等各自实现接口中的方法就是驱动,每个数据库的驱动都不相同

        就像Java中的类一样,Java定义一个接口,下边各个类实现接口中的方法内容都不相同)

      在连接数据库前,需要在项目文件中与src同级的文件中创建文件夹lib,并将mysql-connector-java-5.1.45-bin.jar文件导入项目中,eclipse是build path,idea是add as libary

      jdbc快速入门:

    package com.zs.Demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class JDBCDemo {
        public static void main(String[] args) throws Exception {
    //        1.加载注册驱动
            Class.forName("com.mysql.jdbc.Driver");
    //        2.获得连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97", "root", "123456");
    //        查看是否连接数据库成功
            System.out.println(conn);
    //      3.构建sql语句
            String sql="update product set sname='华为' where id=2;";
    //        4.创建执行sql语句对象Statement
            Statement stat = conn.createStatement();
    //        5.执行sql语句
             stat.executeUpdate(sql);
    //        6.释放资源
            stat.close();
            conn.close();
        }
    }

      我们建一个数据表来方便进行操作,上面代码需要以下面的数据库表为基础

    use qy97;
    create table product(
      id int primary key  auto_increment,
      sname varchar(50),
      sprice double
    );
    insert into product values
    (1,'小米',5000.12),
    (2,'oppo',4000.54),
    (3,'vivo',1999.99);

    最上面的jdbc快速入门中,写到的executeUpdate()方法,该方法只能执行insert,update ,delete语句,执行查询语句是,需要用到executeQuery()方法

    示例:

    package com.zs.Demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class JDBCDemo2 {
    //    查询数据库操作
        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97", "root", "123456");
            String sql="select * from product ";
            Statement stat = conn.createStatement();
    //        调用executeQuery()该方法得到的结果是一个结果集
            ResultSet rs = stat.executeQuery(sql);
    //        使用循环语句输出结果
            while(rs.next()){
                System.out.print("id:"+rs.getString("id"));
                System.out.print("sname:"+rs.getString("sname"));
                System.out.print("sprice:"+rs.getString("sprice"));
            }
            stat.close();
            conn.close();
        }
    }

    在之前写Properties类时,我们讲过,当用户更换数据库或者更改数据库账号密码时,那么程序就无法连接数据库了,需要重新找程序员在代码中更改,数据库连接信息,这样是很不方便的,所以我们当时写到,编写一个外部properties文件,将数据库的账号密码信息放在文件中,这样用户就可以通过记事本来更换数据库了,具体实现代码如下:

    1.编写外部Properties文件 sql.properties,存放驱动,数据库连接地址,数据库名,密码

    driver:com.mysql.jdbc.Driver
    url:jdbc:mysql://localhost:3306/qy97
    dbuser:root
    dbpwd:123456

    2.建立读取文件内容,建立连接

    package com.zs.Demo;
    
    import java.io.FileInputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class JDBCDemo3 {
        private static String driver;
        private static String url;
        private static String dbuser;
        private static String dbpwd;
        private static Connection conn=null;
        JDBCDemo3(){
            try {
    //            获得数据库连接信息
                getSqlInfo();
    //            链接数据库
                connectSql();
                //编写数据库语句
                String sql="select * from product";
    //            执行数据库语句
                executeSql(sql);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private void executeSql(String sql) throws SQLException {
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery(sql);
            while(rs.next()){
                System.out.println("id:"+rs.getString("id")+
                        ",name:" + rs.getString("sname")+
                        ",price:" +rs.getString("sprice"));
            }
            stat.close();
            conn.close();
        }
    
    
        private void connectSql() throws Exception {
            if(conn==null){
                Class.forName(driver);
               conn=DriverManager.getConnection(url,dbuser,dbpwd);
                System.out.println(conn);
            }
        }
    
        private void getSqlInfo() throws Exception {
            FileInputStream f=new FileInputStream("E:\workspace\ZsProjects\day37\src\sql.properties");
            Properties p=new Properties();
            p.load(f);
            driver = p.getProperty("driver");
            url = p.getProperty("url");
            dbuser = p.getProperty("dbuser");
            dbpwd = p.getProperty("dbpwd");
            f.close();
        }
    
        public static void main(String[] args) {
            new JDBCDemo3();
        }
    }

    这样就可以读取文件建立连接,用户更改数据库时,直接记事本打开文件就可以更改数据库

  • 相关阅读:
    在线|九月月考选填题
    函数$f(x)=e^xpm e^{-x}$相关
    偶函数性质的推广
    2020年全国卷Ⅱ卷文科数学选填题解析版
    2020年全国卷Ⅱ卷文科数学解答题解析版
    待定系数法
    特殊方法求函数解析式
    phd文献阅读日志-4.1
    phd文献阅读日志-1.2~3.2(1.2,2.1,2.2,3.1,3.2)
    完美解决linux下vim在终端不能用鼠标复制的问题
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10628032.html
Copyright © 2011-2022 走看看