实现JDBC

本文介绍了如何使用Java创建user类的JavaBean,配合JDBCUtils进行数据库连接管理,以及userdao实现用户表的增删操作。通过jdbcInsertTest测试类展示了数据插入和查询的过程。
摘要由CSDN通过智能技术生成

1.创建javaBean
创建一个用于保存用户数据的user类

package chapter09;

import java.util.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;
}

}

2.创建工具类
由于每次操作数据库时,都需要加载数据库驱动。建立数据库连接以及关闭数据库连接为了避免代码的重复书写,下面建立一个专门用于数据库相关操作的类。

package chapter09;

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 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","123456");
	
	return conn;
}
   public static void realse(Statement stmt,Connection conn) {
	   if(stmt!=null) {
		   try {
			   stmt.close();
			   
		   }catch(SQLException e) {
			   e.printStackTrace();
		   }
		   stmt=null;
	   }
	   if(conn!=null) {
		   try {
			   conn.close();
			   
		   }catch(SQLException e) {
			   e.printStackTrace();
		   }
		   conn=null;
	   }
	   
   }

}

3.创建dao
该类中封装了对user表的添加,查询操作。

package chapter09;

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

public class userdao {
public boolean insert(user user) {
Connection conn=null;
Statement stmt=null;
try {
conn=JDBCUtils.getCon();
stmt=conn.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 {
	System.out.println("资源会被关闭吗");
	JDBCUtils.realse(stmt, conn);
}
return false;

}
public List findAlluser(){
List list=null;
return list;
}
}

4.创建测试类
向user表中添加数据的类。

package chapter09;

import java.util.Date;

public class jdbcInsertTest {
public static void main(String[] args) {
userdao dao=new userdao();
user user=new user();
user.setId(11);
user.setUsername(“lj”);
user.setPassword(“2020080605038”);
user.setEmail(“lj@qq.com”);
user.setBirthday(new Date());

boolean flag=dao.insert(user);
System.out.println(flag);

}
}

测试

package chapter09;

import java.util.Date;

public class jdbcInsertTest {
public static void main(String[] args) {
userdao dao=new userdao();
user user=new user();
user.setId(11);
user.setUsername(“glc”);
user.setPassword(“2020080605038”);
user.setEmail(“glc@qq.com”);
user.setBirthday(new Date());

boolean flag=dao.insert(user);
System.out.println(flag);

}
}

实现JDBC SQL拦截可以通过以下步骤: 1. 创建一个实现JDBC的Statement、PreparedStatement、CallableStatement等接口的子类,在子类中重写执行SQL语句的方法。 2. 在重写的方法中,可以通过调用父类的方法获取原始的SQL语句,对SQL语句进行修改或记录日志等操作。 3. 将拦截器的实现类注册到JDBC的数据源中,以便在创建连接时使用该实现类。 4. 在应用程序中使用JDBC连接时,自动调用注册的拦截器,对执行的SQL语句进行拦截和修改。 下面是一个简单的示例,演示如何实现一个JDBC SQL拦截器: ```java public class JdbcStatementInterceptor extends StatementInterceptorAdapter { @Override public ResultSet executeQuery(Statement statement, String sql) throws SQLException { // 在执行查询语句前,记录日志 System.out.println("Executing query: " + sql); // 执行原始的查询语句 return statement.executeQuery(sql); } @Override public boolean execute(Statement statement, String sql) throws SQLException { // 在执行SQL语句前,记录日志 System.out.println("Executing SQL: " + sql); // 执行原始的SQL语句 return statement.execute(sql); } // 其他方法的实现,省略 } ``` 然后在应用程序中注册拦截器: ```java // 创建数据源 DataSource dataSource = createDataSource(); // 创建拦截器 JdbcStatementInterceptor interceptor = new JdbcStatementInterceptor(); // 注册拦截器到数据源中 ((org.apache.tomcat.jdbc.pool.DataSource) dataSource).getInterceptors().add(interceptor); ``` 这样,在应用程序中使用JDBC连接时,就会自动调用注册的拦截器,在执行SQL语句时进行拦截和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值