JDBC 连接池

1.简单了解JDBC

        JDBC:(java  database  Connection) JAVA数据库连接

        java:是面向对象的语言

        SQL:结构化查询语言

        为什么要用JDBC?

                因为这这两种语言无法直接沟通,所以要出来一个翻译MySql:每一个数据库公司提供的方法名可能不一致。导致java必须记住没一个数据库的方法名。

                java语言出来规范,让这些数据库公司实现这个规范。
2.JDBC链接的步骤:

               1.加jar包到工程并且添加

                2.加载驱动

                3.获取链接对象

                4.获取执行sql语句的对象

                5.执行sql语句

                6.关闭语句

注意:1.添加,删除,修改操作要用  executeUpdate()方法

           2.查询操作用      executeQuery()方法

           3.若控制台出现乱码,要在链接路径中加时区

1.添加操作


    package Text1;
     
    import java.sql.*;
    import java.util.Scanner;
     
    /**
     * @ClassName qwe
     * @author:zkm
     * 添加数据操作
     * @Date: 2021-10-16 17:12
     */
    public class Text1 {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //五步走
            // 1.加载驱动
            /*
            *       驱动:声卡驱动,网卡驱动
            *       Class.forName();         //java反射里的一句代码。表示加载  字节码文件
            *       Class.forName("com.mysql.jdbc.Driver");   //加载mysql
            *       Class.forName("com.mysql.cj.jdbc.Dricer");     //加载mysql 8
            *       Class.forName("com.microsoft.sqlserver.jdbc.SQLserverDriver");//加载SQLserver
            *       Class.forName("sun.jdbc.odbc.JdbcOrdbcDriver");  //odbc
            *       Class.forName("oracle.jdbc.driver.OracleDriver")  //Oracle
            * */
              Class.forName("com.mysql.cj.jdbc.Driver");
            // 2.创建连接
            // DriverManager:驱动的管理者,通过它创建连接
              String url="jdbc:mysql://localhost:3306/book?serverTimezone=Asia/Shanghai";
              Connection conn= DriverManager.getConnection(url,"root","123456");
     
            // 3.sql预编译/加载
            //方法一:使用Statement 用于执行静态SQL语句并返回其生成的结果的对象
             Statement statement=conn.createStatement();
             String sql="insert into bookcate values (29,'英语')";
            //添加
            // i 返回sql语句执行后影响的行数
            int i=statement.executeUpdate(sql);
             System.out.println(i);
     
           // 5.关闭连接
             statement.close();
             conn.close();
        }
     
     
    }

2.删除操作

package Text1;
 
import com.mysql.jdbc.Driver;
 
import java.sql.*;
 
/**
 * @ClassName qwe
 * @author:zkm
 * 删除数据操作
 * @Date: 2021-10-16 17:12
 */
 
 
public class Text2 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //第一步:加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //第二步:连接mysql
        String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
        Connection conn= DriverManager.getConnection(url,"root","123456");
        //第三步 sql加载
 
        String sql="delete from bookcate where CateId=12";
        PreparedStatement ps=conn.prepareStatement(sql);
        //第四步
        int i=ps.executeUpdate();
        System.out.println(i);
        //第五步 关闭连接
        ps.close();
        conn.close();
 
    }
}

3.修改操作

package Text1;
 
import java.sql.*;
 
/**
 * @ClassName Text5
 * @author:zkm
 *
 * 修改操作
 *
 * @Date: 2021-10-19 10:36
 */
public class Text5 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
        Connection conn=DriverManager.getConnection(url,"root","123456");
        String sql="update bookcate set CateName='高数' where Cateid=7 ";
        PreparedStatement ps=conn.prepareStatement(sql);
        int i=ps.executeUpdate();
        System.out.println(i);
        ps.close();
        conn.close();
    }
}

4.查询操作

单行查询

package Text1;
 
import java.sql.*;
 
/**
 * @ClassName qwe
 * @author:zkm
 *
 * 查询数据操作
 * 获取单行数据
 *
 * @Date: 2021-10-16 17:12
 */
 
public class Text3 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //第一步 加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
 
        //第二步  连接数据库
        String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
        Connection conn= DriverManager.getConnection(url,"root","123456");
 
        //第三步
        String sql="select * from bookcate  where Cateid=?";
        PreparedStatement  ps=conn.prepareStatement(sql);
 
        //第四步
        //给?号设值
        ps.setObject(1,2);
        //执行sql
        //ResultSet查询语句返回的类型是   结果集类型
        ResultSet set=ps.executeQuery();
        //set.next()判断是否有下一行数据
        if(set.next()){
            //获取数据方法一:根据数据库中数据的类型   根据第几列列数
            /*
                int id=set.getInt(1);
                String name=set.getString(2);
                System.out.println(id+"   "+name);
             */
            //获取数据方法二:根据数据库中列的名字来获取
            /*
                int id=set.getInt("Cateid");
                String name=set.getString("CateName");
                System.out.println(id+"  "+name);
             */
            //获取方法三:使用对象类型获取
            Object id=set.getInt(1);
            Object name=set.getString(2);
            System.out.println(id+"   "+name);
        }
 
        //第五步
        ps.close();
        conn.close();
    }
}

  2.多行查询

                用List集合方法装。

package Text1;
 
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @ClassName Text4
 * @author:zkm
 *
 * 查询操作
 * 获取全部数据
 *
 * @Date: 2021-10-19 10:12
 */
public class Text4 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //连接数据库
        String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
        Connection conn= DriverManager.getConnection(url,"root","123456");
        //  写sql语句
        String sql="select * from bookcate";
        PreparedStatement ps=conn.prepareStatement(sql);
        //执行语句
        //ResultSet 查询语句返回的类型是  结果集类型
        ResultSet set=ps.executeQuery();
        //getMetaDate()   此方法用来获取一个ResultSetMetaData对象 中有
        ResultSetMetaData data=set.getMetaData();
        //getColumnCount()   方法是ResultSetMetaData对象的方法  可以获取总共列数
        int count=data.getColumnCount();
        //set.next()  判断是否有下一行数据
        //定义一个泛型list 的 list,创建一个大的List用来储存每一行数据
        List<List> Biglist=new ArrayList<>();
        while(set.next()){
            List<Object> list=new ArrayList<>();
            for(int i=1;i<=count;i++){
                Object o=set.getObject(i);
                list.add(o);
            }
            Biglist.add(list);
        }
        System.out.println(Biglist);
        //关闭连接
        ps.close();
        conn.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值