JDBC之Update方法

创建4个类:StuInfo(实体类)、DBConn(连接、关闭数据库)、DBUtil(数据库操作)、RunMain(测试类)

1.StuInfo实体类:

package com.lykion;

public class StuInfo {

	private String sno;
	private String sname;
	private String dname;
	private String ssex;
	private int cno;
	private double mark;
	private String type; 
	
	public StuInfo() {
		
	}
	
	public StuInfo(String sno, String sname, String dname, String ssex, int cno, double mark, String type) {
		super();
		this.sno = sno;
		this.sname = sname;
		this.dname = dname;
		this.ssex = ssex;
		this.cno = cno;
		this.mark = mark;
		this.type = type;
	}
	
	public String getSno() {
		return sno;
	}
	public void setSno(String sno) {
		this.sno = sno;
	}
	
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	
	public String getSsex() {
		return ssex;
	}
	public void setSsex(String ssex) {
		this.ssex = ssex;
	}
	
	public int getCno() {
		return cno;
	}
	public void setCno(int cno) {
		this.cno = cno;
	}
	
	public double getMark() {
		return mark;
	}
	public void setMark(double mark) {
		this.mark = mark;
	}
	
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
}

2.DBConn类,对数据库的操作:打开数据库(连接数据库),操作完成后关闭数据库,释放资源

package com.lykion;

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

public class DBConn {

	private static final String url = "jdbc:mysql://localhost:3306/test";		//数据库地址
	private static final String username = "root";		//数据库用户名
	private static final String password = "123456";		//数据库密码
	private static final String driver = "com.mysql.jdbc.Driver";		//mysql驱动
	private static final Connection conn = null;
	
	/**
	 * 连接数据库
	 * @return
	 */
	public static Connection conn() {
		Connection conn = null;
		try {
			Class.forName(driver);  //加载数据库驱动
			try {
				conn = DriverManager.getConnection(url, username, password);  //连接数据库
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 关闭数据库链接
	 * @return
	 */
	public static void close() {
		if(conn != null) {
			try {
				conn.close();  //关闭数据库链接
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

3.DBUtil类:主要是数据常用的操作,实例中主要是实现Update操作

package com.lykion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {

	private static Connection conn = null;
	private static PreparedStatement ps = null;
	private static ResultSet rs = null;
	
	public static void Update(StuInfo stu) {
		conn = DBConn.conn();		//调用 DBconnection 类的 conn() 方法连接数据库
		String sql = "UPDATE student01 SET sname=?, dname=?, ssex=?, cno=?, mark=?, type=? WHERE sno=?";		//sql语句
		try {
			ps = conn.prepareStatement(sql);
			
			/**
			 * 根据学号sno修改(更新)学生信息
			 * 1.传入参数的位置会发生变化
			 * 2.sno的位置不是在第一个位置,而是在最后
			 * 3.准确设置各个字段的位置
			 */
			ps.setString(1, stu.getSname());
			ps.setString(2, stu.getDname());
			ps.setString(3, stu.getSsex());
			ps.setInt(4, stu.getCno());
			ps.setDouble(5, stu.getMark());
			ps.setString(6, stu.getType());
			ps.setString(7, stu.getSno());
			
			ps.executeUpdate();
			
			System.out.println("修改成功(* ̄︶ ̄)");
		} catch (SQLException e) {
			System.out.println("操作失败o(╥﹏╥)");
			e.printStackTrace();
		}finally {
			DBConn.close();
		}
	}
}


4.RunMain类:测试类,测试DBUtil中的方式是否实现

package com.lykion;

public class RunMain {

	public static void main(String[] args) {
		StuInfo stu = new StuInfo("9006", "糯米团子", "计算机科学与软件工程", "女", 7, 89, "选修");
		DBUtil.Update(stu);	}
}


  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Sharding-JDBC进行update操作的示例代码: ```java // 导入相关类 import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm; import org.apache.shardingsphere.api.sharding.standard.StandardShardingStrategyConfiguration; import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.Properties; // 创建数据源 DataSource dataSource = ShardingDataSourceFactory.createDataSource(createDataSourceMap(), createShardingRuleConfiguration(), new Properties()); // 获取数据库连接 try (Connection conn = dataSource.getConnection()) { // 创建PreparedStatement对象 String sql = "UPDATE user SET name = ? WHERE id = ?"; PreparedStatement ps = conn.prepareStatement(sql); // 设置参数 ps.setString(1, "newName"); ps.setInt(2, 1); // 执行更新操作 ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } // 创建数据源Map private static Map<String, DataSource> createDataSourceMap() { Map<String, DataSource> dataSourceMap = new HashMap<>(); // 添加主库数据源 dataSourceMap.put("master", createDataSource("master")); // 添加从库数据源 dataSourceMap.put("slave0", createDataSource("slave0")); dataSourceMap.put("slave1", createDataSource("slave1")); return dataSourceMap; } // 创建数据源 private static DataSource createDataSource(final String dataSourceName) { // 创建HikariDataSource对象 HikariDataSource result = new HikariDataSource(); // 配置数据源 result.setDriverClassName("com.mysql.jdbc.Driver"); result.setJdbcUrl(String.format("jdbc:mysql://localhost:3306/%s", dataSourceName)); result.setUsername("root"); result.setPassword("root"); return result; } // 创建分片规则配置 private static ShardingRuleConfiguration createShardingRuleConfiguration() { // 创建分片规则配置对象 ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); // 配置分片表规则 shardingRuleConfig.getTableRuleConfigs().add(createTableRuleConfiguration()); // 配置分库策略 shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("id", new ModuloDatabaseShardingAlgorithm())); // 配置分表策略 shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("id", new ModuloTableShardingAlgorithm())); return shardingRuleConfig; } // 创建分片表规则配置 private static TableRuleConfiguration createTableRuleConfiguration() { // 创建分片表规则配置对象 TableRuleConfiguration result = new TableRuleConfiguration(); // 配置逻辑表名 result.setLogicTable("user"); // 配置实际数据节点 result.setActualDataNodes("master.user, slave0.user, slave1.user"); // 配置分片键 result.setKeyGeneratorColumnName("id"); // 配置分片算法 result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("id", new ModuloTableShardingAlgorithm())); return result; } // 创建取模分片算法 public class ModuloTableShardingAlgorithm implements PreciseShardingAlgorithm<Integer>, RangeShardingAlgorithm<Integer> { @Override public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Integer> shardingValue) { for (String each : availableTargetNames) { if (each.endsWith(shardingValue.getValue() % 2 + "")) { return each; } } throw new IllegalArgumentException(); } @Override public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Integer> shardingValue) { Collection<String> result = new LinkedHashSet<>(); for (Integer i = shardingValue.getValueRange().lowerEndpoint(); i <= shardingValue.getValueRange().upperEndpoint(); i++) { for (String each : availableTargetNames) { if (each.endsWith(i % 2 + "")) { result.add(each); } } } return result; } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值