JDBC-1

JDBC-1

1.引入JDBC

什么是Jdbc
	Java数据库连接,java可以操作各种关系型数据库
jdbc的本质是什么
	本质就是一个普通的java类,数据库厂商提供的驱动jar包,来实现sun公司提供一套"应用程序接口规范"

2.JDBC七大操作步骤

1)注册驱动
	Class.forName("com.mysql.jdbc.Driver");
2)获取数据库的连接对象
	Connection connection = DriverManager.getConnection(
		 "jdbc:mysql://localhost:3306/库名",
		 "用户名(root)",
		 "密码(8053698)"
	);
3)准备好的sql语句
	String sql = "...";
4)获取数据库的执行对象---执行sql语句
	Statement statement = connection.createStatement();
5)数据库的执行对象 去操作数据库
	int i = statement.executeUpdate(sql);
6)返回结果
	syso("影响了"+i+"行");
7)释放资源
	statement.close();
	connection.close();

3.JDBC七大操作步骤的关于API的介绍

java.sql.Drvier 驱动接口
java.sql.DriverManager:驱动管理类(管理jdbc的驱动服务)
java.sql.Connection:与特定数据库的一种会话连接
java.sql.Statement:执行静态sql语句 (执行对象,操作数据库)
java.sql.ResultSet:获取数据表的结果集 (接口)

4.使用Statement对象完成DDL语句以及DML语句的操作

DDL语句(创建表):
	Class.forName("com.mysql.jdbc.Driver");
	Connection connection = DriverManager.getConnection();
	String sql = "create table 表名(字段名称1 字段类型,...)";
	Statement statement = connection.createStatement();
	statement.executeUpdate(sql);
	statement.close();
	connection.close();
DML语句(增删改):
	Class.forName("com.mysql.jdbc.Driver");
	Connection connection = DriverManager.getConnection();
	增:String sql = "insert into 表名 values(...),...";
	删:String sql = "delete from 表名 where 条件";
	改:String sql = "update 表名 set 修改内容 where 条件";
	Statement statement = connection.createStatement();
	int i = statement.executeUpdate(sql);(i为受到影响的数据库表中的行数)
	sout(i)
	statement.close();
	connection.close();

5.使用Statement完成DQL语句的操作

DQL语句(查):
	Class.forName("com.mysql.jdbc.Driver");
	Connection connection = DriverManager.getConnection();
	String sql = "select * from 表名";
	Statement statement = connection.createStatement();
	ResultSet rs = statement.executeQuery(sql);
	while(rs.next()){
		数据类型 变量名=rs.getString("字段名称") 或者 数据类型 变量名=rs.getString(列的索引值);
		使用变量名;
	}
	rs.close();
	statement.close();
	connection.close();

6.关于Statement完成DQL语句的应用

通过DQL语句将查询到的数据表中的数据赋值给对象,再将对象添加到集合中,这样数据库表中的数据就保存到集合中了
	例如:
	Class.forName("com.mysql.jdbc.Driver");
	Connection connection = DriverManager.getConnection();
	String sql = "select * from Student";
	Statement statement = connection.createStatement();
	ResultSet rs = statement.executeQuery(sql);
	List<Student> list = new Arraylist<>();
	Student stu = null ;
	while(rs.next()){
		stu = new Student();
		数据类型 变量名=rs.getString("字段名称") 或者 数据类型 变量名=rs.getString(列的索引值);
		使用变量名;
		...
		list.add(stu);
	}
	rs.close();
	statement.close();
	connection.close();
	return list;

7.将jdbc的部分操作封装到工具类中

注意:首先要在src目录下配置文件(jdbc.properties)
public class JdbcUtils {
    //成员变量声明
    private static String url = null;
    private static String username = null;
    private static String password = null;
    private static String driverClassname = null;
    //静态代码块
    static {
        try {
            //应该要获取url,username,password,driverClassname 这几个值
            //需要properties配置文件
            //java.util.Properties:属性集合列表 :属性列表中的每个键及其对应的值都是一个字符串。
            Properties prop = new Properties();
            //有个功能:public void load(InputStream inStream):将输入流中的内容到属性集合列表中
            //读取src下面的jdbc.properties配置文件

            //当期类.class.getClassLoader().getResourceAsStream("配置文件的名称xxx.properties") ;---获取资源文件所在的输入流对象
            InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

            //加载流对象到属性集合列表中
            prop.load(inputStream);

            //java.util.Properties的特有功能:可以通过键获取值
            //public String getProperty(String key)
            driverClassname = prop.getProperty("driverClassname"); //获取驱动类
            url = prop.getProperty("url");  //获取url
            username = prop.getProperty("username"); //用户名
            password = prop.getProperty("password");//密码

            //注册驱动
            Class.forName(driverClassname);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    private JdbcUtils() {
    }


    //获取连接对象
    public static Connection getConnnection() {
        try {
            Connection connection = DriverManager.getConnection(
                    url,
                    username,
                    password
            );
            return connection;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  null ;
    }

    //释放资源
    //如果是针对ddl语句或者dml语句,Statement对象以及Connection对象关闭
    public static void close(Statement stmt, Connection conn) {
        close(null, stmt, conn);
    }

    //如果是针对DQL语句,ResultSet对象以及Statement以及Connection对象关闭
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值