JDBC学习笔记 -- day02 常用类详解

一、java.sql.DriverManager类:创建连接

1.注册驱动

注意:DriverManager.registerDriver(new com.mysql.jdbc.Driver()); -- 此方法不建议使用

原因

☞  导致驱动被注册两次

☞  强烈依赖数据库的驱动 jar

解决办法

☞  Class.forName("com.mysql.jdbc.Driver");

2.与数据库建立连接

方式一:

		//获取connection链接对象
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_demo", "root", "wingzhe");

方式二:

		//获取connection链接对象
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "wingzhe");
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_demo", info);

方式三:

		//获取connection链接对象
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_demo?user=root&password=123");

二、java.sql.Connection接口:一个连接

接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。

三、java.sql.Statement接口:操作sql语句,并返回相应结果的对象

1.接口的实现在数据库驱动中,用于执行静态sql语句并返回他所生成结果的对象

2.主要方法:
☞  ResultSet  executeQuery( String sql )  :根据查询语句返回结果集,只能执行 select 语句

☞  int  executeUpdate( String sql )  :根据执行的DML(insert 、update 、delete )语句,返回受影响的行数

		//执行insert
		int i = statement.executeUpdate("INSERT INTO users(NAME,PASSWORD,email,birthday) VALUES ('zl','123456','zl@qq.com','1991-09-21')");
		if(i > 0){
			System.out.println("insert成功");
		}
		//执行update
		int i = statement.executeUpdate("UPDATE users SET PASSWORD='654321' WHERE NAME='zl'");
		if(i > 0){
			System.out.println("update成功");
		}

		//执行delete
		int i = statement.executeUpdate("DELETE FROM users WHERE id='2'");
		if(i > 0){
			System.out.println("delete成功");
		}

☞  boolean  execute( String sql )  :此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet的结果集,仅当执行select语句,且有返回结果时返回true,其余语句都返回false

四、java.sqlResultSet 接口:结果集,客户端存表数据的对象

1.封装结果集

提供一个游标,默认游标指向结果集第一行之前

调用一次 next() ,游标向下移动一行

提供一些 get() 方法

☞  获取某条记录的某列数据的方法

Object getObject(String columName)  :  按照列名来取

Object getObject(int columCount)  :  按照列的顺序来取,第一列为1

☞  数据库类型、java类型以及 resultSet 中对应类型的获取


int  getInt() :获取int数据

String  getString() :获取String类型的数据

long  getLong() :获取long类型的数据

Double getDouble() :获取double类型的数据

package com.jdcb.entity;

import java.util.Date;

public class User {

	private int id;
	private String name;
	private String password;
	private String email;
	private Date birthday;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password
				+ ", email=" + email + ", birthday=" + birthday + "]";
	}

}
package com.jdcb.test;

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

import org.junit.Test;

import com.jdcb.entity.User;

public class JdbcTest {

	@Test
	public void selectTest() throws Exception {
		// 注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		// 获取连接
		Connection connection = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/jdbc_demo", "root", "123");
		// 获取statement
		Statement statement = connection.createStatement();
		// 执行sql
		ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
		// 处理结果集
		while (resultSet.next()) {
			User user = new User();
			user.setId(resultSet.getInt(1));
			user.setName(resultSet.getString("name"));
			user.setPassword(resultSet.getString(3));
			user.setEmail(resultSet.getString("email"));
			user.setBirthday(resultSet.getDate("birthday"));
			System.out.println(user);
		}
		// 释放资源
		resultSet.close();
		statement.close();
		connection.close();
	}
}
2.可移动游标的方法

boolean next(): 向下滚动。返回有无记录
boolean provious(): 向上滚动。返回有无记录
boolean absolute(int rowCount): 定位到某条记录。第一条为1
void beforeFirst(): 滚动到第一条的前面
void afterLast(): 滚动到最后一条的后面


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值