大二第十二次JDBC

什么是JDBC

jdbc的全都是Java数据库连接,它是一套用于执行SQL语句的Java API应用程序,可以通过这套API连接到关系型数据库并使用SQL语句来完成对数据库中数据的查询,更新,新增和删除的操作。
不同种类的数据库在其内部处理数据的方式是不同的,如果直接使用数据库厂商提供的访问接口操作数据库,应用程序的可移植性就会变得差。

driver接口

driver接口是所有jdbc驱动程序必须实现的接口,该接口专门提供给数据库厂商使用,需要注意的是,在编写jdbc程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中

DriverManager类

Driver Manager类用于加载jdbc驱动,并且创建与数据库的连接。
在这里插入图片描述

Connection接口

Connection接口代表Java程序和数据库的连接,只有获取该连接对象后,才能访问数据库并操作数据表。
在这里插入图片描述

Statement接口

Statement接口用于执行静态的SQL语句并返回一个结果对象,该接口的对象通过connection实行的createstatement()方法获得。利用该对象把静态的SQL语句发送到数据库,编译成执行,然后返回数据库的处理结果在statement接口中。提供了三个常用的执行SQL语句的方法。
在这里插入图片描述

Preparedstatement接口

statement接口封装了jdbc执行SQL语句的方法,可以完成Java程序执行SQL语句的操作,然而在实际开发过程中往往需要将程序中的变量作为SQL语句的查询条件。而使用statement接口操作这些sql语句会变过于繁琐并且存在安全方面的问题。针对这一问题jdbc API提供了扩展的preparedstatement接口。
preparedStatement是statement的子接口用于执行编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作应用,该接口中的SQL语句可以使用占位符?来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值,在preparedstatement接口中提供了一些常用的方法。
在这里插入图片描述

resultset接口

resultset接口用于保存jdbc执行查询时返回的结果结,该结果集封装在一个逻辑表格中,在resultset接口内部有一个指向表格数据行的游标resultset对象。初始化时,游标在表格的第一行之前调用next方法可将游行移动到下一行,如果下一行没有数据则返回false在应用程序中,经常使用next方法作为while循环的条件来迭代resultset结果集。
在这里插入图片描述在这里插入图片描述

代码及结果展示

package cn.itcast.jdbc.example;

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

public class example03test {
	public static void main(String[] args) {
		Connection con=null;
		Statement stmt=null;
		ResultSet rs=null;
		try {
			//1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			//2.链接数据库http://
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc" ,"root" ,"123456");
			
			//3.获取查询数据库
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			//4.执行查询语句
			rs=stmt.executeQuery("select * from users");
			rs. absolute(2);
			System.out.println("第二行的数据"+rs.getString( "name"));
			rs.beforeFirst();
			rs.next();
			System.out.println("第一行的数据" +rs.getString("name"));
			rs. afterLast();
			rs . previous();
			System. out. println("最后一行"+rs.getString( "name" ));}
			catch(Exception e) {
			throw new RuntimeException(e);
			}finally {
			//6.关闭连接,释放资源
			System. out. println("资源会被关闭---");
			if(rs!=null) {
			}
			}

	}
}
package cn.itcast.jdbc.example;

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

public class example2test {
	public static void main(String[] args){
		String time =String.format("%tF",new Date(0));
		Connection con=null;
		java.sql.PreparedStatement pstmt=null;
		ResultSet rs=null;
		try {
		Class.forName("com.mysql.jdbc.Driver");
		con=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","123456");
		String sql=" insert into users values(?,?,?,?,?)";
		pstmt=con.prepareStatement(sql);
		pstmt.setInt(1, 6);
		pstmt.setString(2,"dashuju");
		pstmt.setString(3,"123");
		pstmt.setString(4,"dashuju@huagong.com"); 
		java.sql.Date date= new java.sql.Date(new Date(0).getTime());
		pstmt.setDate(5, date);
		int row=pstmt.executeUpdate();
		if(row==1) {
		   System.out.println("插入成功");
		}else {
		System.out.println("插入失败");
		}
		}catch(Exception e) {
			throw new RuntimeException(e);
		}finally {
		}
		}


}

package cn.itcast.jdbc.example;

import java.util.Date;

public class JdbcInsertTest {
	public static void main(String[] args) {

	        UserDao dao= new UserDao();

			User user=new User( ) ;

			user . setId(7);

			user. setUsername("yxh");

			user. setPassword( "123");

			user . setEmail("yxh@qq. com");

			user.setBirthDay(null);

			boolean flag=dao. insert(user);

			System. out. println(flag);
  }

}

package cn.itcast.jdbc.example;

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

public class JDBCUtils {
	public static Connection getCon() throws Exception{
		Class.forName("com.mysql.jdbc.Driver");
		Connection con = DriverManager.getConnection( " jdbc:mysql: //localhost:3306/jdbc", " root" , "123456");
		return con;
	}
	public static void realse(ResultSet rs, Statement stmt , Connection con) {
	if(rs!=null) {
		try {
			rs.close();
		}catch (SQLException e) {
			e. printStackTrace();
		}
		rs=null;
	}
	if(stmt!=null) {
	try {
		stmt.close();
	}catch (SQLException e) {
		e.printStackTrace();
	}
	stmt=null;
	}
	if(con!=null) {
	try {
	con. close();
	}catch (SQLException e) {
	e.printStackTrace();
	}
	con=null;
	}
	}
}
package cn.itcast.jdbc.example;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

public class test {
		public static void main(String[] args) {
		Connection con=null;
		Statement stmt=null;
		ResultSet rs=null;

		try {
			//1.注册并加载驱动
			DriverManager drivermanager=new Driver();
			DriverManager . registerDriver(Driver);
			//2.获取连接对象
			String url = "jdbc:mysql: //1ocalhost:3306bc";
			String user ="root";
			String password = "root";
			
			con= DriverManager.getConnection(url, user, password);
			//3.获取操作数据的对象
			stmt=con.createStatement();
			//4.向数据库发送查询语句
			String sql = "select * from users";
			rs = stmt.executeQuery(sql);
	
			//5.遍历结果集。获取查询的数据
			while(rs .next()){//跳转到下一行,在某一-行的值遍历完毕后,才会跳转到下一行去遍历。
				int id = rs.getInt(1);// getInt("id")
		String name = rs.getString("name");
		String psw = rs.getString(3);
		String email = rs.getString("email" );
		Date birthday = rs.getDate( "birthday");
		System.out.println(id+" "+name+" "+psw+" "+email+" "+ birthday);
		}
		
		}catch(Exception e) {
			throw new RuntimeException(e);
		}finally {
			System.out.println("资源会被关闭吗-----");
			JDBCUtils.realse(rs, stmt, con);
		}
}
}

package cn.itcast.jdbc.example;

import java.sql.Date;

public class User {
	private int id;
	private String username;
	private String password;
	private String email ;
	private Date birthDay;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this . id=id;
	}
	public String getUsername() {
	      return username;
   }
	public void setUsername (String username) {
		this. username = username;
	}
	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;
	}


}

package cn.itcast.jdbc.example;

import java.sql.Connection;
import java.sql.Statement;
import java.util.List;

public class UserDao {
	public boolean insert(User user){
		Connection con=null;
		Statement stmt=null;
		try {
		con=JDBCUtils.getCon();
		stmt=con.createStatement();
		java.util.Date birthday=user.getBirthDay();
		String sqlbirthday=String . format( "%tF", birthday);
		String sql=" insert into users(id,name , password , email,birthday)"+"values('"
		+user . getId()+"','"
		+user. getUsername()+"','"
		+user . getPassword()+"','"
		+user . getEmail()+"','"
		+sqlbirthday+"'"
		+")";
		System. out. println(sql);
		int row=stmt . executeUpdate(sql);
		if(row>0) {
			return true;
		}
		}catch(Exception e) {
		throw new RuntimeException(e);
		}finally {

		//6.关闭连接,释放资源

		System. out . println("资源会被关闭---");JDBCUtils .realse(null, stmt, con);
		}
		return false;}
		
		//2.提供查询所有的方法需要补充完整public List<User> findAl1User(){

		public List<User> findAllUser(){
			List<User> list=null;
			return list;
		}
		public User findUserById(int id){
			User list=null;
			return list;
			
		}
		public boolean update(User user) {
			return false;
			
		}
		public boolean delete(int id) {
			return false;
			
		}
}

在这里插入图片描述
在这里插入图片描述

2020080605045 袁雪华 大数据2005

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值