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.查询操作

        1.单行查询

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 Biglist=new ArrayList<>();
        while(set.next()){
            List 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();
    }
}
 
  

        

你可能感兴趣的:(JDBC,java,数据库,jdbc)