jdbc基本流程:

/*

  • jdbc基本流程:
  • 1.加载驱动 (选择数据库)
  • 2.获取连接 (与数据库建立连接)
  • 3.准备sql
  • 4.创建处理块 (发送执行sql的工具)
  • 5.发送sql (这里sql语句)
  • 6.获取结果集
  • 7关闭
    */
    public class JDBCDemo01 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
    //1.加载驱动 (选择数据库) 1)调用方法 2)创建对象 3)反射
    Class.forName(“oracle.jdbc.driver.OracleDriver”);
    //2.获取连接 (与数据库建立连接)
    Connection conn=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:xe”, “SCOTT”, “TIGER”);
    //3.准备sql
    String sql=“select empno,ename from emp”; //sql不要加分号
    //4.创建处理块 (发送执行sql的工具)
    //静态处理块
    Statement state=conn.createStatement();
    //5.发送sql (这里sql语句)
    ResultSet result=state.executeQuery(sql);
    //6.获取结果集+处理
    while(result.next()){
    int id=result.getInt(1);
    String name=result.getString(“ename”);
    System.out.println(id+"—>"+name);
    }
    //7关闭
    result.close();
    state.close();
    conn.close();
    }

}

/*

  • 模拟用户模块的基本操作:
  • 注册用户
  • 用户登录
  • 修改用户数据
  • 注销用户
  • 优化功能:
  •  注册:检查用户名知否已被占用
    
  •  登录:只根据用户名查询,比对密码
    

*/
public class JDBCTest03 {
public static void main(String[] args) {
/boolean flag=reg(“yinwei”,“123456”);
if(flag){
System.out.println(“注册成功”);
}else{
System.out.println(“注册失败”);
}
/

	login("yinweidf","123456 or 1=1");
	
	//change();
}

/*
 * 转账:
 * 	 张三给李四转账100元
 * 	保证在同一个事务中,通知成功,同时失败
 * 
 *  事务默认自动提交,设置手动提交
 */
public static void change(){
	Connection conn=null;
	PreparedStatement state=null;
	try {
		conn=DBUtil.getConnection();
		String sql1="update sxt_user set money=money-100 where name='zhangsan'";
		String sql2="update sxt_user set money=money+100 where name='lisi'";
		
		//设置手动提交
		conn.setAutoCommit(false);
		
		state=conn.prepareStatement(sql1);
		int rows1=state.executeUpdate();
		
		state=conn.prepareStatement(sql2);
		int rows2=state.executeUpdate();
		
		if(rows1>0 && rows2>0){
			conn.commit();  //提交
			System.out.println("转账成功");
		}else{
			conn.rollback(); //回滚
			System.out.println("转账失败");
		}
		
		
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally{
		DBUtil.release(conn, state);
	}
}

/*
 * 登录功能
 * 逻辑:
 * 	1)根据用户名去表中查看密码,如果有与用户输入的密码是否相同
 * 	2)根据用户名和密码直接查看,看是否能够查到记录
 * 
 * 
 * 推荐使用预处理块:
 * 	1.预先编译,执行效率高   
 * 	2.防止sql注入
 *  ?在PreparedStatement是一个占位符
 *  
 */
public static void login(String name,String pwd){
	String sql="select name from sxt_user where name=? and pwd=?";
	Connection conn=null;
	PreparedStatement state=null;
	ResultSet result=null;
	try {
		conn=DBUtil.getConnection();
		state=conn.prepareStatement(sql);
		//完善sql语句,为占位符?赋值
		state.setString(1, name);
		state.setObject(2, pwd);
		result=state.executeQuery();
		if(result.next()){
			System.out.println("登录成功");
		}else{
			System.out.println("登录失败");
		}
		
	} catch (SQLException e) {
		e.printStackTrace();
	} finally{
		DBUtil.release(conn, state, result);
	}
}

//注册工能
public static boolean reg(String name,String pwd){
	boolean flag=false;
	//获取连接
	Connection conn=null;
	Statement state=null;
	try {
		conn=DBUtil.getConnection();
		state=conn.createStatement();
		String sql="insert into sxt_user values(sq_sxt_user_id.nextval,'"+name+"',"+pwd+")";
		int rows=state.executeUpdate(sql);
		if(rows>0){
			flag=true;
		}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally{
		DBUtil.release(conn, state, null);
	}
	return flag;
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值