MYSQL (JDBC)操作(一)

package mysqljdbc;

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

public class ConnectionUtil {
	private static String URL="jdbc:mysql://localhost:3307/scott"+"?useSSL=false&useUnicode=true"+"&characterEncoding=UTF-8&serverTimezone=UTC";
//	private static String URL = "jdbc:mysql://localhost:3307/scott" +"?useUnicode=true&useJDBCCompliantTimezoneShift=true"+"&useLegacyDatetimeCode=false&serverTimezone=UTC";
	private static String DRIVER="com.mysql.cj.jdbc.Driver";
	private static String USER = "biubiu";
	private static String PASSWORD = "123456";
	//加载驱动
	static{
		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 取得连接对象
	 * @return
	 */
	public static Connection getConnection(){
		try {
			return DriverManager.getConnection(URL,USER,PASSWORD);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	public static void close(Connection conn){
		try {
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

package mysqljdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/*
 * 插入数据
 */

public class MysqlTest {
	public static void main(String[] args) throws Exception {
//		if(insertEmp()){
//			System.out.println("插入数据成功");
//		}else {
//			System.out.println("插入数据失败");
//		}
		System.out.println(updateDeposit(200));
	}
	public static boolean updateDeposit(double num) throws Exception{
		//是否成功的标记
		boolean flag = true;
		//取得数据库连接
		Connection conn = ConnectionUtil.getConnection();
		//SQL语句
		String sql1 = "UPDATE emp set deposit = deposit-"+num+"where ename = 'jack'";
		String sql2 = "UPDATE emp set deposit = deposit+"+num+"where ename = 'mike'";
		//转换数据库指令
		PreparedStatement pst1=conn.prepareStatement(sql1);
		PreparedStatement pst2=conn.prepareStatement(sql2);
		//取消自动提交。如果不设置,默认自动提交
		conn.setAutoCommit(false);
		//执行费语句
		try {
			pst1.executeUpdate();
			pst2.executeUpdate();
			//如果没异常,则手动提交
			conn.commit();
		} catch (Exception e) {
			flag = false;
			e.printStackTrace();
			//如果出现异常,回滚
			conn.rollback();
			// TODO: handle exception
		}finally{
			//关闭资源
			ConnectionUtil.close(conn);
		}
		
		return flag;
	}
	public static boolean insertEmp() throws Exception{
		//取得连接对象
		Connection conn = ConnectionUtil.getConnection();
		//定义语句
		String sql = "INSERT INTO emp(empno,ename,job,sal) VALUES(1002,'mike','salesman',3500)";
		//取得发送sql语句的对象
		PreparedStatement pst=conn.prepareStatement(sql);
		//执行语句
		int row = pst.executeUpdate();
		//关闭资源
		ConnectionUtil.close(conn);
		return row>0;
	}

}

在数据更新的时候可能会要考虑,事务的原子性,一个事物多个操作要么都成功要么都失败
将默认自动提交取消,改为手动提交(若出现异常就回滚,否则提交)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值