JDBC

java database connectivity java数据库连接
面向接口编程:接口不干活,实现类干活,厂商把实现类放进jar包
jar包不可交叉使用


JDBC_第1张图片
JDBC

JDBC_第2张图片
导入jar包

DriverManager.registerDriver(new Driver());
//1驱动名和程序产生了紧耦合的关系import com.mysql.jdbc.Driver; (jdbc的jar包的名字会变,不应该写死)
//2使得驱动个被注册了两次

package com.mysql.jdbc;

import java.sql.SQLException;
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    // ~ Static fields/initializers
    // ---------------------------------------------

    //
    // Register ourselves with the DriverManager
    //
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

解决方案
Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/st_db";
------------------- =============~~~~**************
协议名 域名 端口号 数据库名
简写形式:不建议
String url = "jdbc:mysql:///st_db";
前提:必须访问本地数据库服务器localhost+必须使用默认端口号3306

数据库连接对象
作用:通过三个数据库的连接参数来连接到数据库进行数据库的管理,常用方法
CretateStatement()----获取传输器对象
prepareStatement(String sql)----获取带有预编译效果的传输器对象
传输器对象Statement
作用:执行SQL
executeQuery(String sql)
executeUpdate(String sql);
结果集对象ResultSet
作用:用来封装sql执行完的数据
next()查询结果集中是否有数据,指针的效果
getString(String column)根据指定类名获取数据
getString(int index)根据列索引获取数据
rs.getInt(int index)
rs.getInt(String column)
getDouble(int index)
getDouble(String column)

关闭资源
Try{}catch(){}finally(){}

1注册驱动import com.mysql.jdbc.Driver;
2获得数据库连接(Connection)
3获得传输器(传输器用来执行sql)
4执行sql
5遍历结果集
6释放资源

简单例子

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

import com.mysql.jdbc.Driver;

/**
 * 这个类用来做第一段JDBC的应用
 */
public class HelloJdbc {
    // 单元测试方法hello
    // @Test+void
    @Test
    public void hello() throws SQLException {
        /*
         * 1注册驱动import com.mysql.jdbc.Driver; 2获得数据库连接 3获得传输器 4执行sql 5遍历结果集
         * 6释放资源
         */
        DriverManager.registerDriver(new Driver());
        String url = "jdbc:mysql://localhost:3306/st_db";
        String user = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, user, password);
                //传输器:用来执行sql
        Statement st = conn.createStatement();
        String sql = "select * from account";
        /**
         * +-------+-------------+------+-----+---------+----------------+ |
         * Field | Type | Null | Key | Default | Extra |
         * +-------+-------------+------+-----+---------+----------------+ | 
         * id int(11) | NO | PRI | NULL | auto_increment | 
         * | name | varchar(50) |YES | | NULL | | 
         * | money | double | YES | | NULL | |
         * +-------+-------------+------+-----+---------+----------------+
         */
        ResultSet rs = st.executeQuery(sql);
        //rs.next()指针效果,一行一行地遍历数据
        while (rs.next()) {
                      // 根据索引列查询数据
            //System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getDouble(3));
            // 通过字段名称查询数据
            // System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
            System.out.println(rs.getString("id")+" "+rs.getString("name")+" "+rs.getString("money"));
        }
        //正者开,倒着关
        rs.close();
        st.close();
        conn.close();
    }
}

运行结果

1 apple 100
2 pear 200

你可能感兴趣的:(JDBC)