JDBC介绍及操作

JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API

为什么要用JDBC

  • 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】
  • sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。
  • 对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可
  • 大大简化了我们的学习成本

操作JDBC四个步骤

1.在pom.xml文件里添加依赖(Maven项目才可以用,体现maven好处)

<!-- MySql Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>

2.建立数据库连接

3.执行SQL语句

4.处理数据库返回结果集

5.关闭数据库连接


        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {

            /*
            * 加载驱动有两种方式
            *
            * 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译
            * 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高
            *
            * 我们一般都是使用第二种方式
            * */

            //1.
            //DriverManager.registerDriver(new com.mysql.jdbc.Driver());

            //2.
            Class.forName("com.mysql.jdbc.Driver").newInstance();//注册数据库

            //获取与数据库连接的对象-Connetcion
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");

            //获取执行sql语句的statement对象
            statement = connection.createStatement();

            //执行sql语句,拿到结果集
            resultSet = statement.executeQuery("SELECT * FROM users");

            //遍历结果集,得到数据
            while (resultSet.next()) {

                System.out.println(resultSet.getString(1));

                System.out.println(resultSet.getString(2));
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {

            /*
            * 关闭资源,后调用的先关闭
            *
            * 关闭之前,要判断对象是否存在
            * */

            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }

        }

将JDBC操作写成一个DAO类

public class UserDAO {
	public static final String DRIVER = "org.gjt.mm.mysql.Driver";//驱动
	public static final String DBURL = "jdbc:mysql://localhost:3306/testdb";//连接字符串
	public static final String DBUSER = "root";//用户名
	public static final String DBPASS = "123456";//密码
	// 三个对象
	private Connection conn = null;
	private PreparedStatement pStat = null;//PreparedStatement可实现带参数的动态查询
	private ResultSet rs = null;//结果集
 
	public Connection getConnectionn() {
		// 获得数据库连接
		try {
			Class.forName(DRIVER).newInstance();//加载mysql驱动
			return DriverManager.getConnection(DBURL, DBUSER, DBPASS);//建立数据库连接
		} catch (Exception e) {
			return null;
		}
	}
 
	// 关闭数据库连接
	public void close(){
	try{
		if( rs!=null ) rs.close();
		if( pStat!=null ) pStat.close();
		if( conn!=null ) conn.close();
		}catch(Exception e){
				e.printStackTrace();
			}
	} // end close
//
	public boolean isUsernameExists(String username) {
		//判断用户名是否存在
		conn=getConnectionn();
		try {
			pStat =conn.prepareStatement("select * from users where username=?");
			pStat.setString(1, username);//参数1代表第一个‘?’
			rs=pStat.executeQuery();
			if( rs.next() )
				return true;
			else
				return false;
		}catch (Exception e) {
			return false;
		}
		finally{
			close();
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值